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 070B3C636D3 for ; Mon, 6 Feb 2023 07:05:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229918AbjBFHFK (ORCPT ); Mon, 6 Feb 2023 02:05:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229571AbjBFHFH (ORCPT ); Mon, 6 Feb 2023 02:05:07 -0500 Received: from mx.sberdevices.ru (mx.sberdevices.ru [45.89.227.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 110CC6EAB; Sun, 5 Feb 2023 23:05:05 -0800 (PST) Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 6297F5FD03; Mon, 6 Feb 2023 10:05:03 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1675667103; bh=HKZuWYpAONF2bZLUFJ5qd1aGEDhbxe5McJq626GydAw=; h=From:To:Subject:Date:Message-ID:Content-Type:MIME-Version; b=QPQ5xcONM9CJw3iDubG+RM4mDGrhZDXI2o4vHSWMaSGQIC+sWWwUID3n4vQB/HIhT 36br3xTdfvzE4rklSLke4bLNjLUu6iOd5iyyizzjixFRISCyYOvfVjgdu9vwft//vz OT0tYTdcuFGLTFgTT/sOLBbBvD0/tXr6UDIwe2G4fFpnRxZP321TFAHCj2n415wK9K +78xeHcwjiMz3cPnmhJjy3yTTY7m3SVFigeGoBmMVGNQjy7RefCpCRCaOeWnToeHIZ q66xULlaCLz9AfEPIHDin6Ox2rTTh9rvM/p0Iabxch79vUqhNzp3/gwxIy6Ev5iJAO +UPRmdNiAO+eA== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Mon, 6 Feb 2023 10:05:03 +0300 (MSK) From: Arseniy Krasnov To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Arseniy Krasnov , "Krasnov Arseniy" CC: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "virtualization@lists.linux-foundation.org" , "netdev@vger.kernel.org" , kernel Subject: [RFC PATCH v1 11/12] test/vsock: MSG_ZEROCOPY flag tests Thread-Topic: [RFC PATCH v1 11/12] test/vsock: MSG_ZEROCOPY flag tests Thread-Index: AQHZOflVUJdjiggaWkGCbvkRZHpuwQ== Date: Mon, 6 Feb 2023 07:05:02 +0000 Message-ID: <7f0d1d9b-d9f8-2d79-adb6-9c38d39a12fd@sberdevices.ru> In-Reply-To: <0e7c6fc4-b4a6-a27b-36e9-359597bba2b5@sberdevices.ru> Accept-Language: en-US, ru-RU 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: <59E2B6639B553F4883321661267C890B@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: 2023/02/06 01:18:00 #20834045 X-KSMG-AntiVirus-Status: Clean, skipped Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBhZGRzIHNldCBvZiB0ZXN0cyBmb3IgTVNHX1pFUk9DT1BZIGZsYWcuDQoNClNpZ25lZC1v ZmYtYnk6IEFyc2VuaXkgS3Jhc25vdiA8QVZLcmFzbm92QHNiZXJkZXZpY2VzLnJ1Pg0KLS0tDQog dG9vbHMvdGVzdGluZy92c29jay9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDIgKy0NCiB0b29s cy90ZXN0aW5nL3Zzb2NrL3V0aWwuaCAgICAgICAgICAgICAgICB8ICAgMSArDQogdG9vbHMvdGVz dGluZy92c29jay92c29ja190ZXN0LmMgICAgICAgICAgfCAgMTEgKw0KIHRvb2xzL3Rlc3Rpbmcv dnNvY2svdnNvY2tfdGVzdF96ZXJvY29weS5jIHwgNDcwICsrKysrKysrKysrKysrKysrKysrKysN CiB0b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3RfemVyb2NvcHkuaCB8ICAxMiArDQogNSBm aWxlcyBjaGFuZ2VkLCA0OTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3RfemVyb2NvcHkuYw0KIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3RfemVyb2NvcHku aA0KDQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy92c29jay9NYWtlZmlsZSBiL3Rvb2xzL3Rl c3RpbmcvdnNvY2svTWFrZWZpbGUNCmluZGV4IDQzYTI1NGYwZTE0ZC4uMGE3ODc4N2QxZDkyIDEw MDY0NA0KLS0tIGEvdG9vbHMvdGVzdGluZy92c29jay9NYWtlZmlsZQ0KKysrIGIvdG9vbHMvdGVz dGluZy92c29jay9NYWtlZmlsZQ0KQEAgLTEsNyArMSw3IEBADQogIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vbmx5DQogYWxsOiB0ZXN0IHZzb2NrX3BlcmYNCiB0ZXN0OiB2c29j a190ZXN0IHZzb2NrX2RpYWdfdGVzdA0KLXZzb2NrX3Rlc3Q6IHZzb2NrX3Rlc3QubyB0aW1lb3V0 Lm8gY29udHJvbC5vIHV0aWwubw0KK3Zzb2NrX3Rlc3Q6IHZzb2NrX3Rlc3QubyB2c29ja190ZXN0 X3plcm9jb3B5Lm8gdGltZW91dC5vIGNvbnRyb2wubyB1dGlsLm8NCiB2c29ja19kaWFnX3Rlc3Q6 IHZzb2NrX2RpYWdfdGVzdC5vIHRpbWVvdXQubyBjb250cm9sLm8gdXRpbC5vDQogdnNvY2tfcGVy ZjogdnNvY2tfcGVyZi5vDQogDQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy92c29jay91dGls LmggYi90b29scy90ZXN0aW5nL3Zzb2NrL3V0aWwuaA0KaW5kZXggZmI5OTIwOGE5NWVhLi40NmJh MWQzMjAyYjggMTAwNjQ0DQotLS0gYS90b29scy90ZXN0aW5nL3Zzb2NrL3V0aWwuaA0KKysrIGIv dG9vbHMvdGVzdGluZy92c29jay91dGlsLmgNCkBAIC0yLDYgKzIsNyBAQA0KICNpZm5kZWYgVVRJ TF9IDQogI2RlZmluZSBVVElMX0gNCiANCisjaW5jbHVkZSA8c3RkYm9vbC5oPg0KICNpbmNsdWRl IDxzeXMvc29ja2V0Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3ZtX3NvY2tldHMuaD4NCiANCmRpZmYg LS1naXQgYS90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcv dnNvY2svdnNvY2tfdGVzdC5jDQppbmRleCA2N2U5ZjlkZjNhOGMuLjI1MzczY2QxOGVmMSAxMDA2 NDQNCi0tLSBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfdGVzdC5jDQorKysgYi90b29scy90 ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3QuYw0KQEAgLTIwLDYgKzIwLDcgQEANCiAjaW5jbHVkZSA8 c3lzL21tYW4uaD4NCiAjaW5jbHVkZSA8cG9sbC5oPg0KIA0KKyNpbmNsdWRlICJ2c29ja190ZXN0 X3plcm9jb3B5LmgiDQogI2luY2x1ZGUgInRpbWVvdXQuaCINCiAjaW5jbHVkZSAiY29udHJvbC5o Ig0KICNpbmNsdWRlICJ1dGlsLmgiDQpAQCAtOTIwLDYgKzkyMSwxNiBAQCBzdGF0aWMgc3RydWN0 IHRlc3RfY2FzZSB0ZXN0X2Nhc2VzW10gPSB7DQogCQkucnVuX2NsaWVudCA9IHRlc3Rfc2VxcGFj a2V0X2JpZ21zZ19jbGllbnQsDQogCQkucnVuX3NlcnZlciA9IHRlc3Rfc2VxcGFja2V0X2JpZ21z Z19zZXJ2ZXIsDQogCX0sDQorCXsNCisJCS5uYW1lID0gIlNPQ0tfU1RSRUFNIE1TR19aRVJPQ09Q WSIsDQorCQkucnVuX2NsaWVudCA9IHRlc3Rfc3RyZWFtX21zZ196Y29weV9jbGllbnQsDQorCQku cnVuX3NlcnZlciA9IHRlc3Rfc3RyZWFtX21zZ196Y29weV9zZXJ2ZXIsDQorCX0sDQorCXsNCisJ CS5uYW1lID0gIlNPQ0tfU1RSRUFNIE1TR19aRVJPQ09QWSBlbXB0eSBNU0dfRVJSUVVFVUUiLA0K KwkJLnJ1bl9jbGllbnQgPSB0ZXN0X3N0cmVhbV9tc2dfemNvcHlfZW1wdHlfZXJycV9jbGllbnQs DQorCQkucnVuX3NlcnZlciA9IHRlc3Rfc3RyZWFtX21zZ196Y29weV9lbXB0eV9lcnJxX3NlcnZl ciwNCisJfSwNCiAJe30sDQogfTsNCiANCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Zzb2Nr L3Zzb2NrX3Rlc3RfemVyb2NvcHkuYyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfdGVzdF96 ZXJvY29weS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi4xMjE0 MzkxZDNjOTkNCi0tLSAvZGV2L251bGwNCisrKyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tf dGVzdF96ZXJvY29weS5jDQpAQCAtMCwwICsxLDQ3MCBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9ubHkNCisvKiBNU0dfWkVST0NPUFkgZmVhdHVyZSB0ZXN0cyBmb3Ig dnNvY2sNCisgKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMyBTYmVyRGV2aWNlcy4NCisgKg0KKyAq IEF1dGhvcjogQXJzZW5peSBLcmFzbm92IDxBVktyYXNub3ZAc2JlcmRldmljZXMucnU+DQorICov DQorDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRl IDxzdHJpbmcuaD4NCisjaW5jbHVkZSA8c3lzL21tYW4uaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+ DQorI2luY2x1ZGUgPHBvbGwuaD4NCisjaW5jbHVkZSA8bGludXgvZXJycXVldWUuaD4NCisjaW5j bHVkZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUgPGVycm9yLmg+DQorI2luY2x1ZGUgPGVy cm5vLmg+DQorDQorI2luY2x1ZGUgImNvbnRyb2wuaCINCisjaW5jbHVkZSAidnNvY2tfdGVzdF96 ZXJvY29weS5oIg0KKw0KKyNpZm5kZWYgU09MX1ZTT0NLDQorI2RlZmluZSBTT0xfVlNPQ0sgMjg3 DQorI2VuZGlmDQorDQorI2RlZmluZSBQQUdFX1NJWkUJCTQwOTYNCisjZGVmaW5lIFBPTExfVElN RU9VVF9NUwkJMjAwMA0KKyNkZWZpbmUgU0VORE1TR19SRVNfSU9WX0xFTgkoLTIpDQorDQorc3Ry dWN0IHplcm9jb3B5X3Rlc3RfZGF0YSB7DQorCWJvb2wgemVyb2NvcGllZDsNCisJYm9vbCBjb21w bGV0aW9uOw0KKwlpbnQgc2VuZG1zZ19lcnJubzsNCisJc3NpemVfdCBzZW5kbXNnX3JlczsNCisJ aW50IHZlY3NfY250Ow0KKwlzdHJ1Y3QgaW92ZWMgdmVjc1szXTsNCit9Ow0KKw0KK3N0YXRpYyB2 b2lkIGRvX3JlY3ZfY29tcGxldGlvbihpbnQgZmQsIGJvb2wgemVyb2NvcGllZCwgYm9vbCBjb21w bGV0aW9uKQ0KK3sNCisJc3RydWN0IHNvY2tfZXh0ZW5kZWRfZXJyICpzZXJyOw0KKwlzdHJ1Y3Qg bXNnaGRyIG1zZyA9IHsgMCB9Ow0KKwlzdHJ1Y3QgcG9sbGZkIGZkcyA9IHsgMCB9Ow0KKwljaGFy IGNtc2dfZGF0YVsxMjhdOw0KKwlzdHJ1Y3QgY21zZ2hkciAqY207DQorCXVpbnQzMl90IGhpLCBs bzsNCisNCisJZmRzLmZkID0gZmQ7DQorCWZkcy5ldmVudHMgPSAwOw0KKw0KKwlpZiAocG9sbCgm ZmRzLCAxLCBQT0xMX1RJTUVPVVRfTVMpIDwgMCkgew0KKwkJcGVycm9yKCJwb2xsIik7DQorCQll eGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCisNCisJaWYgKCEoZmRzLnJldmVudHMgJiBQT0xMRVJS KSkgew0KKwkJaWYgKGNvbXBsZXRpb24pIHsNCisJCQlmcHJpbnRmKHN0ZGVyciwgIlBPTExFUlIg ZXhwZWN0ZWRcbiIpOw0KKwkJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJCX0gZWxzZSB7DQorCQkJ cmV0dXJuOw0KKwkJfQ0KKwl9DQorDQorCW1zZy5tc2dfY29udHJvbCA9IGNtc2dfZGF0YTsNCisJ bXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2dfZGF0YSk7DQorDQorCXJlY3Ztc2coZmQs ICZtc2csIE1TR19FUlJRVUVVRSk7DQorDQorCWNtID0gQ01TR19GSVJTVEhEUigmbXNnKTsNCisJ aWYgKCFjbSkgew0KKwkJZnByaW50ZihzdGRlcnIsICJjbXNnOiBubyBjbXNnXG4iKTsNCisJCWV4 aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlpZiAoY20tPmNtc2dfbGV2ZWwgIT0gU09MX1ZT T0NLKSB7DQorCQlmcHJpbnRmKHN0ZGVyciwgImNtc2c6IHVuZXhwZWN0ZWQgJ2Ntc2dfbGV2ZWwn XG4iKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlpZiAoY20tPmNtc2dfdHlw ZSAhPSAwKSB7DQorCQlmcHJpbnRmKHN0ZGVyciwgImNtc2c6IHVuZXhwZWN0ZWQgJ2Ntc2dfdHlw ZSdcbiIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCXNlcnIgPSAodm9pZCAq KUNNU0dfREFUQShjbSk7DQorCWlmIChzZXJyLT5lZV9vcmlnaW4gIT0gU09fRUVfT1JJR0lOX1pF Uk9DT1BZKSB7DQorCQlwcmludGYoInNlcnI6IHdyb25nIG9yaWdpbjogJXVcbiIsIHNlcnItPmVl X29yaWdpbik7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCisNCisJaWYgKHNlcnItPmVl X2Vycm5vKSB7DQorCQlwcmludGYoInNlcnI6IHdyb25nIGVycm9yIGNvZGU6ICV1XG4iLCBzZXJy LT5lZV9lcnJubyk7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCisNCisJaGkgPSBzZXJy LT5lZV9kYXRhOw0KKwlsbyA9IHNlcnItPmVlX2luZm87DQorCWlmIChoaSAhPSBsbykgew0KKwkJ ZnByaW50ZihzdGRlcnIsICJzZXJyOiBleHBlY3RlZCBoaSA9PSBsb1xuIik7DQorCQlleGl0KEVY SVRfRkFJTFVSRSk7DQorCX0NCisNCisJaWYgKGhpKSB7DQorCQlmcHJpbnRmKHN0ZGVyciwgInNl cnI6IGV4cGVjdGVkIGhpID09IGxvID09IDBcbiIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0K Kwl9DQorDQorCWlmICh6ZXJvY29waWVkICYmIChzZXJyLT5lZV9jb2RlICYgU09fRUVfQ09ERV9a RVJPQ09QWV9DT1BJRUQpKSB7DQorCQlmcHJpbnRmKHN0ZGVyciwgInNlcnI6IHdhcyBjb3B5IGlu c3RlYWQgb2YgemVyb2NvcHlcbiIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQor CWlmICghemVyb2NvcGllZCAmJiAhKHNlcnItPmVlX2NvZGUgJiBTT19FRV9DT0RFX1pFUk9DT1BZ X0NPUElFRCkpIHsNCisJCWZwcmludGYoc3RkZXJyLCAic2Vycjogd2FzIHplcm9jb3B5IGluc3Rl YWQgb2YgY29weVxuIik7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCit9DQorDQorc3Rh dGljIHZvaWQgZW5hYmxlX3NvX3plcm9jb3B5KGludCBmZCkNCit7DQorCWludCB2YWwgPSAxOw0K Kw0KKwlpZiAoc2V0c29ja29wdChmZCwgU09MX1NPQ0tFVCwgU09fWkVST0NPUFksICZ2YWwsIHNp emVvZih2YWwpKSkNCisJCWVycm9yKDEsIGVycm5vLCAic2V0c29ja29wdCIpOw0KK30NCisNCitz dGF0aWMgdm9pZCAqbW1hcF9ub19mYWlsKHNpemVfdCBieXRlcykNCit7DQorCXZvaWQgKnJlczsN CisNCisJcmVzID0gbW1hcChOVUxMLCBieXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwNCisJ CSAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9QT1BVTEFURSwgLTEsIDApOw0K KwlpZiAocmVzID09IE1BUF9GQUlMRUQpIHsNCisJCXBlcnJvcigibW1hcCIpOw0KKwkJZXhpdChF WElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCXJldHVybiByZXM7DQorfQ0KKw0KK3N0YXRpYyBzaXpl X3QgaW92ZWNfYnl0ZXMoY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIHNpemVfdCBpb3ZudW0pDQor ew0KKwlzaXplX3QgYnl0ZXM7DQorCWludCBpOw0KKw0KKwlmb3IgKGJ5dGVzID0gMCwgaSA9IDA7 IGkgPCBpb3ZudW07IGkrKykNCisJCWJ5dGVzICs9IGlvdltpXS5pb3ZfbGVuOw0KKw0KKwlyZXR1 cm4gYnl0ZXM7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGlvdmVjX3JhbmRvbV9pbml0KHN0cnVjdCBp b3ZlYyAqaW92LA0KKwkJCSAgICAgIGNvbnN0IHN0cnVjdCB6ZXJvY29weV90ZXN0X2RhdGEgKnRl c3RfZGF0YSkNCit7DQorCWludCBpOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgdGVzdF9kYXRhLT52 ZWNzX2NudDsgaSsrKSB7DQorCQlpbnQgajsNCisNCisJCWlmICh0ZXN0X2RhdGEtPnZlY3NbaV0u aW92X2Jhc2UgPT0gTUFQX0ZBSUxFRCkNCisJCQljb250aW51ZTsNCisNCisJCWZvciAoaiA9IDA7 IGogPCBpb3ZbaV0uaW92X2xlbjsgaisrKQ0KKwkJCSgodWludDhfdCAqKWlvdltpXS5pb3ZfYmFz ZSlbal0gPSByYW5kKCkgJiAweGZmOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyB1bnNpZ25lZCBsb25n IGlvdmVjX2hhc2hfZGpiMihzdHJ1Y3QgaW92ZWMgKmlvdiwgc2l6ZV90IGlvdm51bSkNCit7DQor CXVuc2lnbmVkIGxvbmcgaGFzaDsNCisJc2l6ZV90IGlvdl9ieXRlczsNCisJc2l6ZV90IG9mZnM7 DQorCXZvaWQgKnRtcDsNCisJaW50IGk7DQorDQorCWlvdl9ieXRlcyA9IGlvdmVjX2J5dGVzKGlv diwgaW92bnVtKTsNCisNCisJdG1wID0gbWFsbG9jKGlvdl9ieXRlcyk7DQorCWlmICghdG1wKSB7 DQorCQlwZXJyb3IoIm1hbGxvYyIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQor CWZvciAob2ZmcyA9IDAsIGkgPSAwOyBpIDwgaW92bnVtOyBpKyspIHsNCisJCW1lbWNweSh0bXAg KyBvZmZzLCBpb3ZbaV0uaW92X2Jhc2UsIGlvdltpXS5pb3ZfbGVuKTsNCisJCW9mZnMgKz0gaW92 W2ldLmlvdl9sZW47DQorCX0NCisNCisJaGFzaCA9IGhhc2hfZGpiMih0bXAsIGlvdl9ieXRlcyk7 DQorCWZyZWUodG1wKTsNCisNCisJcmV0dXJuIGhhc2g7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3Qg emVyb2NvcHlfdGVzdF9kYXRhIHRlc3RfZGF0YV9hcnJheVtdID0gew0KKwkvKiBMYXN0IGVsZW1l bnQgaGFzIG5vbi1wYWdlIGFsaWduZWQgc2l6ZS4gKi8NCisJew0KKwkJLnplcm9jb3BpZWQgPSB0 cnVlLA0KKwkJLmNvbXBsZXRpb24gPSB0cnVlLA0KKwkJLnNlbmRtc2dfZXJybm8gPSAwLA0KKwkJ LnNlbmRtc2dfcmVzID0gU0VORE1TR19SRVNfSU9WX0xFTiwNCisJCS52ZWNzX2NudCA9IDMsDQor CQl7DQorCQkJeyBOVUxMLCBQQUdFX1NJWkUgfSwNCisJCQl7IE5VTEwsIFBBR0VfU0laRSB9LA0K KwkJCXsgTlVMTCwgMjAwIH0NCisJCX0NCisJfSwNCisJLyogQWxsIGVsZW1lbnRzIGhhdmUgcGFn ZSBhbGlnbmVkIGJhc2UgYW5kIHNpemUuICovDQorCXsNCisJCS56ZXJvY29waWVkID0gdHJ1ZSwN CisJCS5jb21wbGV0aW9uID0gdHJ1ZSwNCisJCS5zZW5kbXNnX2Vycm5vID0gMCwNCisJCS5zZW5k bXNnX3JlcyA9IFNFTkRNU0dfUkVTX0lPVl9MRU4sDQorCQkudmVjc19jbnQgPSAzLA0KKwkJew0K KwkJCXsgTlVMTCwgUEFHRV9TSVpFIH0sDQorCQkJeyBOVUxMLCBQQUdFX1NJWkUgKiAyIH0sDQor CQkJeyBOVUxMLCBQQUdFX1NJWkUgKiAzIH0NCisJCX0NCisJfSwNCisJLyogQWxsIGVsZW1lbnRz IGhhdmUgcGFnZSBhbGlnbmVkIGJhc2UgYW5kIHNpemUuICovDQorCXsNCisJCS56ZXJvY29waWVk ID0gdHJ1ZSwNCisJCS5jb21wbGV0aW9uID0gdHJ1ZSwNCisJCS5zZW5kbXNnX2Vycm5vID0gMCwN CisJCS5zZW5kbXNnX3JlcyA9IFNFTkRNU0dfUkVTX0lPVl9MRU4sDQorCQkudmVjc19jbnQgPSAz LA0KKwkJew0KKwkJCXsgTlVMTCwgUEFHRV9TSVpFIH0sDQorCQkJeyBOVUxMLCBQQUdFX1NJWkUg fSwNCisJCQl7IE5VTEwsIFBBR0VfU0laRSB9DQorCQl9DQorCX0sDQorCS8qIE1pZGRsZSBlbGVt ZW50IGhhcyBub24tcGFnZSBhbGlnbmVkIHNpemUuICovDQorCXsNCisJCS56ZXJvY29waWVkID0g ZmFsc2UsDQorCQkuY29tcGxldGlvbiA9IHRydWUsDQorCQkuc2VuZG1zZ19lcnJubyA9IDAsDQor CQkuc2VuZG1zZ19yZXMgPSBTRU5ETVNHX1JFU19JT1ZfTEVOLA0KKwkJLnZlY3NfY250ID0gMywN CisJCXsNCisJCQl7IE5VTEwsIFBBR0VfU0laRSB9LA0KKwkJCXsgTlVMTCwgMTAwIH0sDQorCQkJ eyBOVUxMLCBQQUdFX1NJWkUgfQ0KKwkJfQ0KKwl9LA0KKwkvKiBNaWRkbGUgZWxlbWVudCBoYXMg Ym90aCBub24tcGFnZSBhbGlnbmVkIGJhc2UgYW5kIHNpemUuICovDQorCXsNCisJCS56ZXJvY29w aWVkID0gZmFsc2UsDQorCQkuY29tcGxldGlvbiA9IHRydWUsDQorCQkuc2VuZG1zZ19lcnJubyA9 IDAsDQorCQkuc2VuZG1zZ19yZXMgPSBTRU5ETVNHX1JFU19JT1ZfTEVOLA0KKwkJLnZlY3NfY250 ID0gMywNCisJCXsNCisJCQl7IE5VTEwsIFBBR0VfU0laRSB9LA0KKwkJCXsgKHZvaWQgKikxLCAx MDAgfSwNCisJCQl7IE5VTEwsIFBBR0VfU0laRSB9DQorCQl9DQorCX0sDQorCS8qIE9uZSBlbGVt ZW50IGhhcyBpbnZhbGlkIGJhc2UuICovDQorCXsNCisJCS56ZXJvY29waWVkID0gZmFsc2UsDQor CQkuY29tcGxldGlvbiA9IGZhbHNlLA0KKwkJLnNlbmRtc2dfZXJybm8gPSBFTk9NRU0sDQorCQku c2VuZG1zZ19yZXMgPSAtMSwNCisJCS52ZWNzX2NudCA9IDMsDQorCQl7DQorCQkJeyBOVUxMLCBQ QUdFX1NJWkUgfSwNCisJCQl7IE1BUF9GQUlMRUQsIFBBR0VfU0laRSB9LA0KKwkJCXsgTlVMTCwg UEFHRV9TSVpFIH0NCisJCX0NCisJfSwNCisJLyogVmFsaWQgZGF0YSwgYnV0IFNPX1pFUk9DT1BZ IGlzIG9mZi4gKi8NCisJew0KKwkJLnplcm9jb3BpZWQgPSB0cnVlLA0KKwkJLmNvbXBsZXRpb24g PSBmYWxzZSwNCisJCS5zZW5kbXNnX2Vycm5vID0gMCwNCisJCS5zZW5kbXNnX3JlcyA9IFNFTkRN U0dfUkVTX0lPVl9MRU4sDQorCQkudmVjc19jbnQgPSAxLA0KKwkJew0KKwkJCXsgTlVMTCwgUEFH RV9TSVpFIH0NCisJCX0NCisJfSwNCit9Ow0KKw0KK3N0YXRpYyB2b2lkIF9fdGVzdF9zdHJlYW1f bXNnX3plcm9jb3B5X2NsaWVudChjb25zdCBzdHJ1Y3QgdGVzdF9vcHRzICpvcHRzLA0KKwkJCQkJ ICAgICAgY29uc3Qgc3RydWN0IHplcm9jb3B5X3Rlc3RfZGF0YSAqdGVzdF9kYXRhKQ0KK3sNCisJ c3RydWN0IG1zZ2hkciBtc2cgPSB7IDAgfTsNCisJc3NpemVfdCBzZW5kbXNnX3JlczsNCisJc3Ry dWN0IGlvdmVjICppb3ZlYzsNCisJaW50IGZkOw0KKwlpbnQgaTsNCisNCisJZmQgPSB2c29ja19z dHJlYW1fY29ubmVjdChvcHRzLT5wZWVyX2NpZCwgMTIzNCk7DQorCWlmIChmZCA8IDApIHsNCisJ CXBlcnJvcigiY29ubmVjdCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCWlm ICh0ZXN0X2RhdGEtPmNvbXBsZXRpb24pDQorCQllbmFibGVfc29femVyb2NvcHkoZmQpOw0KKw0K Kwlpb3ZlYyA9IG1hbGxvYyhzaXplb2YoKmlvdmVjKSAqIHRlc3RfZGF0YS0+dmVjc19jbnQpOw0K KwlpZiAoIWlvdmVjKSB7DQorCQlwZXJyb3IoIm1hbGxvYyIpOw0KKwkJZXhpdChFWElUX0ZBSUxV UkUpOw0KKwl9DQorDQorCWZvciAoaSA9IDA7IGkgPCB0ZXN0X2RhdGEtPnZlY3NfY250OyBpKysp IHsNCisJCWlvdmVjW2ldLmlvdl9sZW4gPSB0ZXN0X2RhdGEtPnZlY3NbaV0uaW92X2xlbjsNCisJ CWlvdmVjW2ldLmlvdl9iYXNlID0gbW1hcF9ub19mYWlsKHRlc3RfZGF0YS0+dmVjc1tpXS5pb3Zf bGVuKTsNCisJfQ0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgdGVzdF9kYXRhLT52ZWNzX2NudDsgaSsr KSB7DQorCQlpZiAodGVzdF9kYXRhLT52ZWNzW2ldLmlvdl9iYXNlID09IE1BUF9GQUlMRUQpIHsN CisJCQlpZiAobXVubWFwKGlvdmVjW2ldLmlvdl9iYXNlLCBpb3ZlY1tpXS5pb3ZfbGVuKSkgew0K KwkJCQlwZXJyb3IoIm11bm1hcCIpOw0KKwkJCQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCQkJfQ0K KwkJfQ0KKwl9DQorDQorCWlvdmVjX3JhbmRvbV9pbml0KGlvdmVjLCB0ZXN0X2RhdGEpOw0KKw0K Kwltc2cubXNnX2lvdiA9IGlvdmVjOw0KKwltc2cubXNnX2lvdmxlbiA9IHRlc3RfZGF0YS0+dmVj c19jbnQ7DQorDQorCWVycm5vID0gMDsNCisNCisJaWYgKHRlc3RfZGF0YS0+c2VuZG1zZ19yZXMg PT0gU0VORE1TR19SRVNfSU9WX0xFTikNCisJCXNlbmRtc2dfcmVzID0gaW92ZWNfYnl0ZXMoaW92 ZWMsIHRlc3RfZGF0YS0+dmVjc19jbnQpOw0KKwllbHNlDQorCQlzZW5kbXNnX3JlcyA9IHRlc3Rf ZGF0YS0+c2VuZG1zZ19yZXM7DQorDQorCWlmIChzZW5kbXNnKGZkLCAmbXNnLCBNU0dfWkVST0NP UFkpICE9IHNlbmRtc2dfcmVzKSB7DQorCQlwZXJyb3IoInNlbmQiKTsNCisJCWV4aXQoRVhJVF9G QUlMVVJFKTsNCisJfQ0KKw0KKwlpZiAoZXJybm8gIT0gdGVzdF9kYXRhLT5zZW5kbXNnX2Vycm5v KSB7DQorCQlmcHJpbnRmKHN0ZGVyciwgImV4cGVjdGVkICdlcnJubycgPT0gJWksIGdvdCAlaVxu IiwNCisJCQl0ZXN0X2RhdGEtPnNlbmRtc2dfZXJybm8sIGVycm5vKTsNCisJCWV4aXQoRVhJVF9G QUlMVVJFKTsNCisJfQ0KKw0KKwlkb19yZWN2X2NvbXBsZXRpb24oZmQsIHRlc3RfZGF0YS0+emVy b2NvcGllZCwgdGVzdF9kYXRhLT5jb21wbGV0aW9uKTsNCisNCisJaWYgKHRlc3RfZGF0YS0+c2Vu ZG1zZ19yZXMgPT0gU0VORE1TR19SRVNfSU9WX0xFTikNCisJCWNvbnRyb2xfd3JpdGV1bG9uZyhp b3ZlY19oYXNoX2RqYjIoaW92ZWMsIHRlc3RfZGF0YS0+dmVjc19jbnQpKTsNCisJZWxzZQ0KKwkJ Y29udHJvbF93cml0ZXVsb25nKDApOw0KKw0KKwlmcmVlKGlvdmVjKTsNCisJY2xvc2UoZmQpOw0K Kwljb250cm9sX3dyaXRlbG4oIkRPTkUiKTsNCit9DQorDQorc3RhdGljIHZvaWQgX190ZXN0X3N0 cmVhbV9tc2dfemVyb2NvcHlfc2VydmVyKGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMsDQor CQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgemVyb2NvcHlfdGVzdF9kYXRhICp0ZXN0X2RhdGEpDQor ew0KKwl1bnNpZ25lZCBsb25nIHJlbW90ZV9oYXNoOw0KKwl1bnNpZ25lZCBsb25nIGxvY2FsX2hh c2g7DQorCXNzaXplX3QgdG90YWxfYnl0ZXNfcmVjOw0KKwl1bnNpZ25lZCBjaGFyICpkYXRhOw0K KwlzaXplX3QgZGF0YV9sZW47DQorCWludCBmZDsNCisNCisJZmQgPSB2c29ja19zdHJlYW1fYWNj ZXB0KFZNQUREUl9DSURfQU5ZLCAxMjM0LCBOVUxMKTsNCisJaWYgKGZkIDwgMCkgew0KKwkJcGVy cm9yKCJhY2NlcHQiKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlkYXRhX2xl biA9IGlvdmVjX2J5dGVzKHRlc3RfZGF0YS0+dmVjcywgdGVzdF9kYXRhLT52ZWNzX2NudCk7DQor DQorCWRhdGEgPSBtYWxsb2MoZGF0YV9sZW4pOw0KKwlpZiAoIWRhdGEpIHsNCisJCXBlcnJvcigi bWFsbG9jIik7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCisNCisJdG90YWxfYnl0ZXNf cmVjID0gMDsNCisNCisJd2hpbGUgKHRvdGFsX2J5dGVzX3JlYyAhPSBkYXRhX2xlbikgew0KKwkJ c3NpemVfdCBieXRlc19yZWM7DQorDQorCQlieXRlc19yZWMgPSByZWFkKGZkLCBkYXRhICsgdG90 YWxfYnl0ZXNfcmVjLA0KKwkJCQkgZGF0YV9sZW4gLSB0b3RhbF9ieXRlc19yZWMpOw0KKwkJaWYg KGJ5dGVzX3JlYyA8PSAwKQ0KKwkJCWJyZWFrOw0KKw0KKwkJdG90YWxfYnl0ZXNfcmVjICs9IGJ5 dGVzX3JlYzsNCisJfQ0KKw0KKwlpZiAodGVzdF9kYXRhLT5zZW5kbXNnX3JlcyA9PSBTRU5ETVNH X1JFU19JT1ZfTEVOKQ0KKwkJbG9jYWxfaGFzaCA9IGhhc2hfZGpiMihkYXRhLCBkYXRhX2xlbik7 DQorCWVsc2UNCisJCWxvY2FsX2hhc2ggPSAwOw0KKw0KKwkvKiBXYWl0aW5nIGZvciBzb21lIHJl c3VsdC4gKi8NCisJcmVtb3RlX2hhc2ggPSBjb250cm9sX3JlYWR1bG9uZygpOw0KKwlpZiAocmVt b3RlX2hhc2ggIT0gbG9jYWxfaGFzaCkgew0KKwkJZnByaW50ZihzdGRlcnIsICJoYXNoIG1pc21h dGNoXG4iKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwljbG9zZShmZCk7DQor CWNvbnRyb2xfZXhwZWN0bG4oIkRPTkUiKTsNCit9DQorDQordm9pZCB0ZXN0X3N0cmVhbV9tc2df emNvcHlfY2xpZW50KGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMpDQorew0KKwlpbnQgaTsN CisNCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGVzdF9kYXRhX2FycmF5KTsgaSsrKQ0K KwkJX190ZXN0X3N0cmVhbV9tc2dfemVyb2NvcHlfY2xpZW50KG9wdHMsICZ0ZXN0X2RhdGFfYXJy YXlbaV0pOw0KK30NCisNCit2b2lkIHRlc3Rfc3RyZWFtX21zZ196Y29weV9zZXJ2ZXIoY29uc3Qg c3RydWN0IHRlc3Rfb3B0cyAqb3B0cykNCit7DQorCWludCBpOw0KKw0KKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRSh0ZXN0X2RhdGFfYXJyYXkpOyBpKyspDQorCQlfX3Rlc3Rfc3RyZWFtX21z Z196ZXJvY29weV9zZXJ2ZXIob3B0cywgJnRlc3RfZGF0YV9hcnJheVtpXSk7DQorfQ0KKw0KK3Zv aWQgdGVzdF9zdHJlYW1fbXNnX3pjb3B5X2VtcHR5X2VycnFfY2xpZW50KGNvbnN0IHN0cnVjdCB0 ZXN0X29wdHMgKm9wdHMpDQorew0KKwlzdHJ1Y3QgbXNnaGRyIG1zZyA9IHsgMCB9Ow0KKwljaGFy IGNtc2dfZGF0YVsxMjhdOw0KKwlzc2l6ZV90IHJlczsNCisJaW50IGZkOw0KKw0KKwlmZCA9IHZz b2NrX3N0cmVhbV9jb25uZWN0KG9wdHMtPnBlZXJfY2lkLCAxMjM0KTsNCisJaWYgKGZkIDwgMCkg ew0KKwkJcGVycm9yKCJjb25uZWN0Iik7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCisN CisJbXNnLm1zZ19jb250cm9sID0gY21zZ19kYXRhOw0KKwltc2cubXNnX2NvbnRyb2xsZW4gPSBz aXplb2YoY21zZ19kYXRhKTsNCisNCisJcmVzID0gcmVjdm1zZyhmZCwgJm1zZywgTVNHX0VSUlFV RVVFKTsNCisJaWYgKHJlcyAhPSAtMSkgew0KKwkJZnByaW50ZihzdGRlcnIsICJleHBlY3RlZCAn cmVjdm1zZygyKScgZmFpbHVyZSwgZ290ICV6aVxuIiwNCisJCQlyZXMpOw0KKwkJZXhpdChFWElU X0ZBSUxVUkUpOw0KKwl9DQorDQorCWNvbnRyb2xfd3JpdGVsbigiRE9ORSIpOw0KKwljbG9zZShm ZCk7DQorfQ0KKw0KK3ZvaWQgdGVzdF9zdHJlYW1fbXNnX3pjb3B5X2VtcHR5X2VycnFfc2VydmVy KGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMpDQorew0KKwlpbnQgZmQ7DQorDQorCWZkID0g dnNvY2tfc3RyZWFtX2FjY2VwdChWTUFERFJfQ0lEX0FOWSwgMTIzNCwgTlVMTCk7DQorCWlmIChm ZCA8IDApIHsNCisJCXBlcnJvcigiYWNjZXB0Iik7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7DQor CX0NCisNCisJY29udHJvbF9leHBlY3RsbigiRE9ORSIpOw0KKwljbG9zZShmZCk7DQorfQ0KZGlm ZiAtLWdpdCBhL3Rvb2xzL3Rlc3RpbmcvdnNvY2svdnNvY2tfdGVzdF96ZXJvY29weS5oIGIvdG9v bHMvdGVzdGluZy92c29jay92c29ja190ZXN0X3plcm9jb3B5LmgNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjcwNWExZTkwZjQxYQ0KLS0tIC9kZXYvbnVsbA0KKysr IGIvdG9vbHMvdGVzdGluZy92c29jay92c29ja190ZXN0X3plcm9jb3B5LmgNCkBAIC0wLDAgKzEs MTIgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQorI2lm bmRlZiBWU09DS19URVNUX1pFUk9DT1BZX0gNCisjZGVmaW5lIFZTT0NLX1RFU1RfWkVST0NPUFlf SA0KKyNpbmNsdWRlICJ1dGlsLmgiDQorDQordm9pZCB0ZXN0X3N0cmVhbV9tc2dfemNvcHlfY2xp ZW50KGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMpOw0KK3ZvaWQgdGVzdF9zdHJlYW1fbXNn X3pjb3B5X3NlcnZlcihjb25zdCBzdHJ1Y3QgdGVzdF9vcHRzICpvcHRzKTsNCisNCit2b2lkIHRl c3Rfc3RyZWFtX21zZ196Y29weV9lbXB0eV9lcnJxX2NsaWVudChjb25zdCBzdHJ1Y3QgdGVzdF9v cHRzICpvcHRzKTsNCit2b2lkIHRlc3Rfc3RyZWFtX21zZ196Y29weV9lbXB0eV9lcnJxX3NlcnZl cihjb25zdCBzdHJ1Y3QgdGVzdF9vcHRzICpvcHRzKTsNCisNCisjZW5kaWYgLyogVlNPQ0tfVEVT VF9aRVJPQ09QWV9IICovDQotLSANCjIuMjUuMQ0K