Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp714128rwb; Sun, 6 Nov 2022 12:33:15 -0800 (PST) X-Google-Smtp-Source: AMsMyM6hGryohpx1prsLfw3S/zbWMJPQBbdY9ctpRmz4r4QmYAQuf2IEwpUhhp4Y5m6LoYj7dxua X-Received: by 2002:a05:6402:4d9:b0:462:e787:3bf8 with SMTP id n25-20020a05640204d900b00462e7873bf8mr46802189edw.195.1667766795645; Sun, 06 Nov 2022 12:33:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1667766795; cv=none; d=google.com; s=arc-20160816; b=PTn4Js42c1XuGSEcd9HW2vz8cHQ30PSos2SWXfl0p/mU9XNB+3EO7mHQsHH0NYdG9Z d99kep0yEHUL31jYLe/LhQdz36LSPi9LDcNGbi8jZ6saO3cUDUzsEa+At5MSh+Voi4py ayk15miXAsp06rnvHCbmbpsHs+ft7Jwt5bUzkkNPdns9ZH03VPaqiZo66D5gKPh1HrlB hrSifwr1S1C7OBXu1im9bfx6jBNxnya+1omJRdCRkERR4Qwd+KO6HgQRYXaoLzmLjGNK D9ydPuIkVE7uEV63kOY/A+tGQmRPKRGNRXeBqFYd+bC/LMkXOZ011t0htOn4L6d9mTLA 3G+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=31uDZyV25yChx94dZ34mNWQ4MPrUAqdHZOxeJxUoubY=; b=a6uSf6v3oSDbVxaGzcYz/Tv++1MAEn4o9nYpjaIrqiimYwPNLgaNq2XkhwvAm+UjqD opv5DpFlxoV4Rup1wZjUNM93fcjgAp4+Me4ZZcFVuRNRFmXqE1sWpEBxAX3R6hqXGaVV EZomQWH35Zbnt4uIKIIaO6h6nuQrKqzPUg9Mlh67U7HYFXBkEbCib4aWKQStOfuY3w+0 j1F1viwItIZZ96mxPPkRjzqhtigRpttq09lhT6jPts55ga69SSzxCYEpcCTS2/CCs9gG bPJRGclFsxMpFOWqXz/c04ZP5KMrcJwmX3U7JrOJJlLAZ9ab87oUPa2lGXGupbsj4v6Z uA7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=Z4eMdwAN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a13-20020a170906684d00b0078d112eaf80si5078281ejs.86.2022.11.06.12.32.53; Sun, 06 Nov 2022 12:33:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=Z4eMdwAN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230182AbiKFTm0 (ORCPT + 95 others); Sun, 6 Nov 2022 14:42:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229932AbiKFTmY (ORCPT ); Sun, 6 Nov 2022 14:42:24 -0500 Received: from mx.sberdevices.ru (mx.sberdevices.ru [45.89.227.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC2C1EE2A; Sun, 6 Nov 2022 11:42:22 -0800 (PST) Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id 1BF1E5FD04; Sun, 6 Nov 2022 22:42:21 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1667763741; bh=31uDZyV25yChx94dZ34mNWQ4MPrUAqdHZOxeJxUoubY=; h=From:To:Subject:Date:Message-ID:Content-Type:MIME-Version; b=Z4eMdwANTQaG8sr8Mhq6wmHYDlxRh8kggaAk51SmGnaZ9lcBcK+7t5D3UgP35vagq jU5/kZQH5ixufz4GgYvXggryvVN3Wiui+NT5DgUdm8dTdSzX6EhYYvEhSj9AIxxl+o BLQuM6zF0qDYxtedIqEGptPLMnDgRD7NKAV5r/8krzrJqfAQSExzdVDa/pPynbOg7C ERjOWxi9EZP5XUdkdN+Oq/NSdc+fwr+YYmnzophKfIuyX4koKkIX+b6zbNbhOo9Fw4 wYLeJaRuNjgf2FfEUTrd5gIGiQEeI86DcAAnWOBbKFJ7OqzNu9vtoZMOcBmN5uq0ps wfOVEaVrwrCpQ== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mx.sberdevices.ru (Postfix) with ESMTP; Sun, 6 Nov 2022 22:42:20 +0300 (MSK) From: Arseniy Krasnov To: Stefano Garzarella , Stefan Hajnoczi , "Michael S. Tsirkin" , Jason Wang , "David S. Miller" , "edumazet@google.com" , Paolo Abeni , Jakub Kicinski , 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 v3 04/11] virtio/vsock: add transport zerocopy callback Thread-Topic: [RFC PATCH v3 04/11] virtio/vsock: add transport zerocopy callback Thread-Index: AQHY8hfQ+kdlJNbB20agFKggEXiUiw== Date: Sun, 6 Nov 2022 19:41:50 +0000 Message-ID: In-Reply-To: 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: <5EFFF9ED28A7A444B376B91C829C247E@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/11/06 12:52:00 #20573807 X-KSMG-AntiVirus-Status: Clean, skipped X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBhZGRzIHRyYW5zcG9ydCBjYWxsYmFjayB3aGljaCBwcm9jZXNzZXMgcnggcXVldWUgb2Yg c29ja2V0IGFuZA0KaW5zdGVhZCBvZiBjb3B5aW5nIGRhdGEgdG8gdXNlciBwcm92aWRlZCBidWZm ZXIsIGl0IGluc2VydHMgZGF0YSBwYWdlcw0Kb2YgZWFjaCBwYWNrZXQgdG8gdXNlcidzIHZtIGFy ZWEuDQoNClNpZ25lZC1vZmYtYnk6IEFyc2VuaXkgS3Jhc25vdiA8QVZLcmFzbm92QHNiZXJkZXZp Y2VzLnJ1Pg0KLS0tDQogaW5jbHVkZS9saW51eC92aXJ0aW9fdnNvY2suaCAgICAgICAgICAgIHwg ICA3ICsNCiBpbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3Zzb2NrLmggICAgICAgfCAgMTQgKysN CiBuZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMgfCAyNDQgKysrKysrKysr KysrKysrKysrKysrKystDQogMyBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdmlydGlvX3Zzb2NrLmgg Yi9pbmNsdWRlL2xpbnV4L3ZpcnRpb192c29jay5oDQppbmRleCBjMWJlNDBmODlhODkuLmQxMGZk ZmQ4ZDE0NCAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvbGludXgvdmlydGlvX3Zzb2NrLmgNCisrKyBi L2luY2x1ZGUvbGludXgvdmlydGlvX3Zzb2NrLmgNCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCB2 aXJ0aW9fdnNvY2tfc29jayB7DQogCXUzMiBidWZfYWxsb2M7DQogCXN0cnVjdCBsaXN0X2hlYWQg cnhfcXVldWU7DQogCXUzMiBtc2dfY291bnQ7DQorCXN0cnVjdCBwYWdlICp1c3JfcG9sbF9wYWdl Ow0KIH07DQogDQogc3RydWN0IHZpcnRpb192c29ja19wa3Qgew0KQEAgLTUxLDYgKzUyLDcgQEAg c3RydWN0IHZpcnRpb192c29ja19wa3Qgew0KIAlib29sIHJlcGx5Ow0KIAlib29sIHRhcF9kZWxp dmVyZWQ7DQogCWJvb2wgc2xhYl9idWY7DQorCWJvb2wgc3BsaXQ7DQogfTsNCiANCiBzdHJ1Y3Qg dmlydGlvX3Zzb2NrX3BrdF9pbmZvIHsNCkBAIC0xMzEsNiArMTMzLDExIEBAIGludCB2aXJ0aW9f dHJhbnNwb3J0X2RncmFtX2JpbmQoc3RydWN0IHZzb2NrX3NvY2sgKnZzaywNCiAJCQkJc3RydWN0 IHNvY2thZGRyX3ZtICphZGRyKTsNCiBib29sIHZpcnRpb190cmFuc3BvcnRfZGdyYW1fYWxsb3co dTMyIGNpZCwgdTMyIHBvcnQpOw0KIA0KK2ludCB2aXJ0aW9fdHJhbnNwb3J0X3plcm9jb3B5X2lu aXQoc3RydWN0IHZzb2NrX3NvY2sgKnZzaywNCisJCQkJICAgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEpOw0KK2ludCB2aXJ0aW9fdHJhbnNwb3J0X3plcm9jb3B5X2RlcXVldWUoc3RydWN0IHZz b2NrX3NvY2sgKnZzaywNCisJCQkJICAgICAgc3RydWN0IHBhZ2UgKipwYWdlcywNCisJCQkJICAg ICAgdW5zaWduZWQgbG9uZyAqcGFnZXNfbnVtKTsNCiBpbnQgdmlydGlvX3RyYW5zcG9ydF9jb25u ZWN0KHN0cnVjdCB2c29ja19zb2NrICp2c2spOw0KIA0KIGludCB2aXJ0aW9fdHJhbnNwb3J0X3No dXRkb3duKHN0cnVjdCB2c29ja19zb2NrICp2c2ssIGludCBtb2RlKTsNCmRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3Zzb2NrLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdmly dGlvX3Zzb2NrLmgNCmluZGV4IDY0NzM4ODM4YmVlNS4uMmEwZTRmMzA5OTE4IDEwMDY0NA0KLS0t IGEvaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb192c29jay5oDQorKysgYi9pbmNsdWRlL3VhcGkv bGludXgvdmlydGlvX3Zzb2NrLmgNCkBAIC02Niw2ICs2NiwyMCBAQCBzdHJ1Y3QgdmlydGlvX3Zz b2NrX2hkciB7DQogCV9fbGUzMglmd2RfY250Ow0KIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7 DQogDQorc3RydWN0IHZpcnRpb192c29ja191c3JfaGRyIHsNCisJdTMyIGZsYWdzOw0KKwl1MzIg bGVuOw0KK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7DQorDQorI2RlZmluZSBWSVJUSU9fVlNP Q0tfVVNSX1BPTExfTk9fREFUQSAgIDANCisjZGVmaW5lIFZJUlRJT19WU09DS19VU1JfUE9MTF9I QVNfREFUQSAgMQ0KKyNkZWZpbmUgVklSVElPX1ZTT0NLX1VTUl9QT0xMX1NIVVRET1dOIH4wDQor DQorc3RydWN0IHZpcnRpb192c29ja191c3JfaGRyX3ByZWYgew0KKwl1MzIgcG9sbF92YWx1ZTsN CisJdTMyIGhkcl9udW07DQorfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsNCisNCiBlbnVtIHZp cnRpb192c29ja190eXBlIHsNCiAJVklSVElPX1ZTT0NLX1RZUEVfU1RSRUFNID0gMSwNCiAJVklS VElPX1ZTT0NLX1RZUEVfU0VRUEFDS0VUID0gMiwNCmRpZmYgLS1naXQgYS9uZXQvdm13X3Zzb2Nr L3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMgYi9uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3Bv cnRfY29tbW9uLmMNCmluZGV4IDQ0NDc2NDg2OTY3MC4uZmE0YTI2ODhhNWQ1IDEwMDY0NA0KLS0t IGEvbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jDQorKysgYi9uZXQvdm13 X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMNCkBAIC0xMiw2ICsxMiw3IEBADQogI2lu Y2x1ZGUgPGxpbnV4L2N0eXBlLmg+DQogI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4NCiAjaW5jbHVk ZSA8bGludXgvdmlydGlvX3Zzb2NrLmg+DQorI2luY2x1ZGUgPGxpbnV4L21tLmg+DQogI2luY2x1 ZGUgPHVhcGkvbGludXgvdnNvY2ttb24uaD4NCiANCiAjaW5jbHVkZSA8bmV0L3NvY2suaD4NCkBA IC0yNDEsNiArMjQyLDE0IEBAIHN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9zZW5kX3BrdF9p bmZvKHN0cnVjdCB2c29ja19zb2NrICp2c2ssDQogc3RhdGljIGJvb2wgdmlydGlvX3RyYW5zcG9y dF9pbmNfcnhfcGt0KHN0cnVjdCB2aXJ0aW9fdnNvY2tfc29jayAqdnZzLA0KIAkJCQkJc3RydWN0 IHZpcnRpb192c29ja19wa3QgKnBrdCkNCiB7DQorCWlmICh2dnMtPnVzcl9wb2xsX3BhZ2UpIHsN CisJCXN0cnVjdCB2aXJ0aW9fdnNvY2tfdXNyX2hkcl9wcmVmICpoZHI7DQorDQorCQloZHIgPSAo c3RydWN0IHZpcnRpb192c29ja191c3JfaGRyX3ByZWYgKilwYWdlX3RvX3ZpcnQodnZzLT51c3Jf cG9sbF9wYWdlKTsNCisNCisJCWhkci0+cG9sbF92YWx1ZSA9IFZJUlRJT19WU09DS19VU1JfUE9M TF9IQVNfREFUQTsNCisJfQ0KKw0KIAlpZiAodnZzLT5yeF9ieXRlcyArIHBrdC0+bGVuID4gdnZz LT5idWZfYWxsb2MpDQogCQlyZXR1cm4gZmFsc2U7DQogDQpAQCAtMjUzLDYgKzI2MiwxNCBAQCBz dGF0aWMgdm9pZCB2aXJ0aW9fdHJhbnNwb3J0X2RlY19yeF9wa3Qoc3RydWN0IHZpcnRpb192c29j a19zb2NrICp2dnMsDQogew0KIAl2dnMtPnJ4X2J5dGVzIC09IHBrdC0+bGVuOw0KIAl2dnMtPmZ3 ZF9jbnQgKz0gcGt0LT5sZW47DQorDQorCWlmICghdnZzLT5yeF9ieXRlcyAmJiB2dnMtPnVzcl9w b2xsX3BhZ2UpIHsNCisJCXN0cnVjdCB2aXJ0aW9fdnNvY2tfdXNyX2hkcl9wcmVmICpoZHI7DQor DQorCQloZHIgPSAoc3RydWN0IHZpcnRpb192c29ja191c3JfaGRyX3ByZWYgKilwYWdlX3RvX3Zp cnQodnZzLT51c3JfcG9sbF9wYWdlKTsNCisNCisJCWhkci0+cG9sbF92YWx1ZSA9IFZJUlRJT19W U09DS19VU1JfUE9MTF9OT19EQVRBOw0KKwl9DQogfQ0KIA0KIHZvaWQgdmlydGlvX3RyYW5zcG9y dF9pbmNfdHhfcGt0KHN0cnVjdCB2aXJ0aW9fdnNvY2tfc29jayAqdnZzLCBzdHJ1Y3QgdmlydGlv X3Zzb2NrX3BrdCAqcGt0KQ0KQEAgLTM0Nyw2ICszNjQsMTkxIEBAIHZpcnRpb190cmFuc3BvcnRf c3RyZWFtX2RvX3BlZWsoc3RydWN0IHZzb2NrX3NvY2sgKnZzaywNCiAJcmV0dXJuIGVycjsNCiB9 DQogDQoraW50IHZpcnRpb190cmFuc3BvcnRfemVyb2NvcHlfaW5pdChzdHJ1Y3QgdnNvY2tfc29j ayAqdnNrLA0KKwkJCQkgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkNCit7DQorCXN0cnVj dCB2aXJ0aW9fdnNvY2tfc29jayAqdnZzOw0KKwlpbnQgZXJyID0gMDsNCisNCisJaWYgKHZtYS0+ dm1fZW5kIC0gdm1hLT52bV9zdGFydCA8IDIgKiBQQUdFX1NJWkUpDQorCQlyZXR1cm4gLUVJTlZB TDsNCisNCisJdnZzID0gdnNrLT50cmFuczsNCisNCisJc3Bpbl9sb2NrX2JoKCZ2dnMtPnJ4X2xv Y2spOw0KKw0KKwlpZiAoIXZ2cy0+dXNyX3BvbGxfcGFnZSkgew0KKwkJLyogR0ZQX0FUT01JQyBi ZWNhdXNlIG9mIHNwaW5sb2NrLiAqLw0KKwkJdnZzLT51c3JfcG9sbF9wYWdlID0gYWxsb2NfcGFn ZShHRlBfS0VSTkVMIHwgR0ZQX0FUT01JQyk7DQorDQorCQlpZiAoIXZ2cy0+dXNyX3BvbGxfcGFn ZSkgew0KKwkJCWVyciA9IC1FTk9NRU07DQorCQl9IGVsc2Ugew0KKwkJCXN0cnVjdCB2aXJ0aW9f dnNvY2tfdXNyX2hkcl9wcmVmICp1c3JfaGRyX3ByZWY7DQorCQkJdW5zaWduZWQgbG9uZyBvbmVf cGFnZSA9IDE7DQorDQorCQkJdXNyX2hkcl9wcmVmID0gcGFnZV90b192aXJ0KHZ2cy0+dXNyX3Bv bGxfcGFnZSk7DQorDQorCQkJaWYgKHZzay0+cGVlcl9zaHV0ZG93biAmIFNIVVRET1dOX01BU0sp IHsNCisJCQkJdXNyX2hkcl9wcmVmLT5wb2xsX3ZhbHVlID0gVklSVElPX1ZTT0NLX1VTUl9QT0xM X1NIVVRET1dOOw0KKwkJCX0gZWxzZSB7DQorCQkJCXVzcl9oZHJfcHJlZi0+cG9sbF92YWx1ZSA9 IHZ2cy0+cnhfYnl0ZXMgPw0KKwkJCQkJCVZJUlRJT19WU09DS19VU1JfUE9MTF9IQVNfREFUQSA6 DQorCQkJCQkJVklSVElPX1ZTT0NLX1VTUl9QT0xMX05PX0RBVEE7DQorCQkJfQ0KKw0KKwkJCXVz cl9oZHJfcHJlZi0+aGRyX251bSA9IDA7DQorDQorCQkJZXJyID0gdm1faW5zZXJ0X3BhZ2VzKHZt YSwgdm1hLT52bV9zdGFydCwNCisJCQkJCSAgICAgICZ2dnMtPnVzcl9wb2xsX3BhZ2UsDQorCQkJ CQkgICAgICAmb25lX3BhZ2UpOw0KKw0KKwkJCWlmIChvbmVfcGFnZSkNCisJCQkJZXJyID0gLUVJ TlZBTDsNCisJCX0NCisJfSBlbHNlIHsNCisJCWVyciA9IC1FSU5WQUw7DQorCX0NCisNCisJc3Bp bl91bmxvY2tfYmgoJnZ2cy0+cnhfbG9jayk7DQorDQorCXJldHVybiBlcnI7DQorfQ0KK0VYUE9S VF9TWU1CT0xfR1BMKHZpcnRpb190cmFuc3BvcnRfemVyb2NvcHlfaW5pdCk7DQorDQoraW50IHZp cnRpb190cmFuc3BvcnRfemVyb2NvcHlfZGVxdWV1ZShzdHJ1Y3QgdnNvY2tfc29jayAqdnNrLA0K KwkJCQkgICAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLA0KKwkJCQkgICAgICB1bnNpZ25lZCBsb25n ICpwYWdlc19udW0pDQorew0KKwlzdHJ1Y3QgdmlydGlvX3Zzb2NrX3Vzcl9oZHJfcHJlZiAqdXNy X2hkcl9wcmVmOw0KKwlzdHJ1Y3QgdmlydGlvX3Zzb2NrX3Vzcl9oZHIgKnVzcl9oZHJfYnVmZmVy Ow0KKwlzdHJ1Y3QgdmlydGlvX3Zzb2NrX3NvY2sgKnZ2czsNCisJdW5zaWduZWQgbG9uZyBtYXhf dXNyX2hkcnM7DQorCXN0cnVjdCBwYWdlICp1c3JfaGRyX3BhZ2U7DQorCWludCBwYWdlc19jbnQ7 DQorDQorCWlmICgqcGFnZXNfbnVtIDwgMikNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwl2dnMg PSB2c2stPnRyYW5zOw0KKw0KKwltYXhfdXNyX2hkcnMgPSAoUEFHRV9TSVpFIC0gc2l6ZW9mKCp1 c3JfaGRyX3ByZWYpKSAvIHNpemVvZigqdXNyX2hkcl9idWZmZXIpOw0KKwkqcGFnZXNfbnVtID0g bWluKG1heF91c3JfaGRycywgKnBhZ2VzX251bSk7DQorCXBhZ2VzX2NudCA9IDA7DQorDQorCXNw aW5fbG9ja19iaCgmdnZzLT5yeF9sb2NrKTsNCisNCisJaWYgKCF2dnMtPnVzcl9wb2xsX3BhZ2Up IHsNCisJCXNwaW5fdW5sb2NrX2JoKCZ2dnMtPnJ4X2xvY2spOw0KKwkJcmV0dXJuIC1FSU5WQUw7 DQorCX0NCisNCisJdXNyX2hkcl9wYWdlID0gdnZzLT51c3JfcG9sbF9wYWdlOw0KKwl1c3JfaGRy X3ByZWYgPSBwYWdlX3RvX3ZpcnQodXNyX2hkcl9wYWdlKTsNCisJdXNyX2hkcl9idWZmZXIgPSAo c3RydWN0IHZpcnRpb192c29ja191c3JfaGRyICopKHVzcl9oZHJfcHJlZiArIDEpOw0KKwl1c3Jf aGRyX3ByZWYtPmhkcl9udW0gPSAwOw0KKw0KKwkvKiBJZiByZWYgY291bnRlciBpcyAxLCB0aGVu IHBhZ2Ugb3duZWQgZHVyaW5nDQorCSAqIGFsbG9jYXRpb24gYW5kIG5vdCBtYXBwZWQsIHNvIGlu c2VydCBpdCB0bw0KKwkgKiB0aGUgb3V0cHV0IGFycmF5LiBJdCB3aWxsIGJlIG1hcHBlZC4NCisJ ICovDQorCWlmIChwYWdlX3JlZl9jb3VudCh1c3JfaGRyX3BhZ2UpID09IDEpIHsNCisJCXBhZ2Vz W3BhZ2VzX2NudCsrXSA9IHVzcl9oZHJfcGFnZTsNCisJCS8qIEluYyByZWYgb25lIG1vcmUsIGFz IEFGX1ZTT0NLIGxheWVyIGNhbGxzDQorCQkgKiAncHV0X3BhZ2UoKScgZm9yIGVhY2ggcmV0dXJu ZWQgcGFnZS4NCisJCSAqLw0KKwkJZ2V0X3BhZ2UodXNyX2hkcl9wYWdlKTsNCisJfSBlbHNlIHsN CisJCXBhZ2VzW3BhZ2VzX2NudCsrXSA9IE5VTEw7DQorCX0NCisNCisJLyogUG9sbGluZyBwYWdl IGlzIGFscmVhZHkgbWFwcGVkLiAqLw0KKwl3aGlsZSAoIWxpc3RfZW1wdHkoJnZ2cy0+cnhfcXVl dWUpICYmDQorCSAgICAgICBwYWdlc19jbnQgPCAqcGFnZXNfbnVtKSB7DQorCQlzdHJ1Y3Qgdmly dGlvX3Zzb2NrX3BrdCAqcGt0Ow0KKwkJc3NpemVfdCByZXN0X2RhdGFfYnl0ZXM7DQorCQlzaXpl X3QgbW92ZWRfZGF0YV9ieXRlczsNCisJCXVuc2lnbmVkIGxvbmcgcGdfb2ZmczsNCisNCisJCXBr dCA9IGxpc3RfZmlyc3RfZW50cnkoJnZ2cy0+cnhfcXVldWUsDQorCQkJCSAgICAgICBzdHJ1Y3Qg dmlydGlvX3Zzb2NrX3BrdCwgbGlzdCk7DQorDQorCQlyZXN0X2RhdGFfYnl0ZXMgPSBsZTMyX3Rv X2NwdShwa3QtPmhkci5sZW4pIC0gcGt0LT5vZmY7DQorDQorCQkvKiBGb3IgcGFja2V0cywgYmln Z2VyIHRoYW4gb25lIHBhZ2UsIHNwbGl0IGl0J3MNCisJCSAqIGhpZ2ggb3JkZXIgYWxsb2NhdGVk IGJ1ZmZlciB0byAwIG9yZGVyIHBhZ2VzLg0KKwkJICogT3RoZXJ3aXNlICd2bV9pbnNlcnRfcGFn ZXMoKScgd2lsbCBmYWlsLCBmb3INCisJCSAqIGFsbCBwYWdlcyBleGNlcHQgZmlyc3QuDQorCQkg Ki8NCisJCWlmIChyZXN0X2RhdGFfYnl0ZXMgPiBQQUdFX1NJWkUpIHsNCisJCQkvKiBIaWdoIG9y ZGVyIGJ1ZmZlciBub3Qgc3BsaXQgeWV0LiAqLw0KKwkJCWlmICghcGt0LT5zcGxpdCkgew0KKwkJ CQlzcGxpdF9wYWdlKHZpcnRfdG9fcGFnZShwa3QtPmJ1ZiksDQorCQkJCQkgICBnZXRfb3JkZXIo bGUzMl90b19jcHUocGt0LT5oZHIubGVuKSkpOw0KKwkJCQlwa3QtPnNwbGl0ID0gdHJ1ZTsNCisJ CQl9DQorCQl9DQorDQorCQlwZ19vZmZzID0gcGt0LT5vZmY7DQorCQltb3ZlZF9kYXRhX2J5dGVz ID0gMDsNCisNCisJCXdoaWxlIChyZXN0X2RhdGFfYnl0ZXMgJiYNCisJCSAgICAgICBwYWdlc19j bnQgPCAqcGFnZXNfbnVtKSB7DQorCQkJc3RydWN0IHBhZ2UgKmJ1Zl9wYWdlOw0KKw0KKwkJCWJ1 Zl9wYWdlID0gdmlydF90b19wYWdlKHBrdC0+YnVmICsgcGdfb2Zmcyk7DQorDQorCQkJcGFnZXNb cGFnZXNfY250KytdID0gYnVmX3BhZ2U7DQorCQkJLyogR2V0IHJlZmVyZW5jZSB0byBwcmV2ZW50 IHRoaXMgcGFnZSBiZWluZw0KKwkJCSAqIHJldHVybmVkIHRvIHBhZ2UgYWxsb2NhdG9yIHdoZW4g cGFja2V0IHdpbGwNCisJCQkgKiBiZSBmcmVlZC4gUmVmIGNvdW50IHdpbGwgYmUgMi4NCisJCQkg Ki8NCisJCQlnZXRfcGFnZShidWZfcGFnZSk7DQorCQkJcGdfb2ZmcyArPSBQQUdFX1NJWkU7DQor DQorCQkJaWYgKHJlc3RfZGF0YV9ieXRlcyA+PSBQQUdFX1NJWkUpIHsNCisJCQkJbW92ZWRfZGF0 YV9ieXRlcyArPSBQQUdFX1NJWkU7DQorCQkJCXJlc3RfZGF0YV9ieXRlcyAtPSBQQUdFX1NJWkU7 DQorCQkJfSBlbHNlIHsNCisJCQkJbW92ZWRfZGF0YV9ieXRlcyArPSByZXN0X2RhdGFfYnl0ZXM7 DQorCQkJCXJlc3RfZGF0YV9ieXRlcyA9IDA7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJaWYgKCFyZXN0 X2RhdGFfYnl0ZXMpDQorCQkJdXNyX2hkcl9idWZmZXItPmZsYWdzID0gbGUzMl90b19jcHUocGt0 LT5oZHIuZmxhZ3MpOw0KKwkJZWxzZQ0KKwkJCXVzcl9oZHJfYnVmZmVyLT5mbGFncyA9IDA7DQor DQorCQl1c3JfaGRyX2J1ZmZlci0+bGVuID0gbW92ZWRfZGF0YV9ieXRlczsNCisNCisJCXVzcl9o ZHJfYnVmZmVyKys7DQorCQl1c3JfaGRyX3ByZWYtPmhkcl9udW0rKzsNCisNCisJCXBrdC0+b2Zm ID0gcGdfb2ZmczsNCisNCisJCWlmIChyZXN0X2RhdGFfYnl0ZXMgPT0gMCkgew0KKwkJCWxpc3Rf ZGVsKCZwa3QtPmxpc3QpOw0KKwkJCXZpcnRpb190cmFuc3BvcnRfZGVjX3J4X3BrdCh2dnMsIHBr dCk7DQorCQkJdmlydGlvX3RyYW5zcG9ydF9mcmVlX3BrdChwa3QpOw0KKwkJfQ0KKw0KKwkJLyog Tm93IHJlZiBjb3VudCBmb3IgYWxsIHBhZ2VzIG9mIHBhY2tldCBpcyAxLiAqLw0KKwl9DQorDQor CWlmICgqcGFnZXNfbnVtIC0gMSA8IG1heF91c3JfaGRycykNCisJCXVzcl9oZHJfYnVmZmVyLT5s ZW4gPSAwOw0KKw0KKwlzcGluX3VubG9ja19iaCgmdnZzLT5yeF9sb2NrKTsNCisNCisJdmlydGlv X3RyYW5zcG9ydF9zZW5kX2NyZWRpdF91cGRhdGUodnNrKTsNCisNCisJKnBhZ2VzX251bSA9IHBh Z2VzX2NudDsNCisNCisJcmV0dXJuIDA7DQorfQ0KK0VYUE9SVF9TWU1CT0xfR1BMKHZpcnRpb190 cmFuc3BvcnRfemVyb2NvcHlfZGVxdWV1ZSk7DQorDQogc3RhdGljIHNzaXplX3QNCiB2aXJ0aW9f dHJhbnNwb3J0X3N0cmVhbV9kb19kZXF1ZXVlKHN0cnVjdCB2c29ja19zb2NrICp2c2ssDQogCQkJ CSAgIHN0cnVjdCBtc2doZHIgKm1zZywNCkBAIC05NjksMTEgKzExNzEsMjEgQEAgdm9pZCB2aXJ0 aW9fdHJhbnNwb3J0X3JlbGVhc2Uoc3RydWN0IHZzb2NrX3NvY2sgKnZzaykNCiB7DQogCXN0cnVj dCBzb2NrICpzayA9ICZ2c2stPnNrOw0KIAlib29sIHJlbW92ZV9zb2NrID0gdHJ1ZTsNCisJc3Ry dWN0IHZpcnRpb192c29ja19zb2NrICp2dnMgPSB2c2stPnRyYW5zOw0KIA0KIAlpZiAoc2stPnNr X3R5cGUgPT0gU09DS19TVFJFQU0gfHwgc2stPnNrX3R5cGUgPT0gU09DS19TRVFQQUNLRVQpDQog CQlyZW1vdmVfc29jayA9IHZpcnRpb190cmFuc3BvcnRfY2xvc2UodnNrKTsNCiANCiAJaWYgKHJl bW92ZV9zb2NrKSB7DQorCQlzcGluX2xvY2tfYmgoJnZ2cy0+cnhfbG9jayk7DQorDQorCQlpZiAo dnZzLT51c3JfcG9sbF9wYWdlKSB7DQorCQkJX19mcmVlX3BhZ2UodnZzLT51c3JfcG9sbF9wYWdl KTsNCisJCQl2dnMtPnVzcl9wb2xsX3BhZ2UgPSBOVUxMOw0KKwkJfQ0KKw0KKwkJc3Bpbl91bmxv Y2tfYmgoJnZ2cy0+cnhfbG9jayk7DQorDQogCQlzb2NrX3NldF9mbGFnKHNrLCBTT0NLX0RPTkUp Ow0KIAkJdmlydGlvX3RyYW5zcG9ydF9yZW1vdmVfc29jayh2c2spOw0KIAl9DQpAQCAtMTA3Nyw2 ICsxMjg5LDcgQEAgdmlydGlvX3RyYW5zcG9ydF9yZWN2X2Nvbm5lY3RlZChzdHJ1Y3Qgc29jayAq c2ssDQogCQkJCXN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0ICpwa3QpDQogew0KIAlzdHJ1Y3QgdnNv Y2tfc29jayAqdnNrID0gdnNvY2tfc2soc2spOw0KKwlzdHJ1Y3QgdmlydGlvX3Zzb2NrX3NvY2sg KnZ2cyA9IHZzay0+dHJhbnM7DQogCWludCBlcnIgPSAwOw0KIA0KIAlzd2l0Y2ggKGxlMTZfdG9f Y3B1KHBrdC0+aGRyLm9wKSkgew0KQEAgLTEwOTUsNiArMTMwOCwxOSBAQCB2aXJ0aW9fdHJhbnNw b3J0X3JlY3ZfY29ubmVjdGVkKHN0cnVjdCBzb2NrICpzaywNCiAJCQl2c2stPnBlZXJfc2h1dGRv d24gfD0gUkNWX1NIVVRET1dOOw0KIAkJaWYgKGxlMzJfdG9fY3B1KHBrdC0+aGRyLmZsYWdzKSAm IFZJUlRJT19WU09DS19TSFVURE9XTl9TRU5EKQ0KIAkJCXZzay0+cGVlcl9zaHV0ZG93biB8PSBT RU5EX1NIVVRET1dOOw0KKw0KKwkJc3Bpbl9sb2NrX2JoKCZ2dnMtPnJ4X2xvY2spOw0KKw0KKwkJ aWYgKHZ2cy0+dXNyX3BvbGxfcGFnZSkgew0KKwkJCXN0cnVjdCB2aXJ0aW9fdnNvY2tfdXNyX2hk cl9wcmVmICpoZHI7DQorDQorCQkJaGRyID0gKHN0cnVjdCB2aXJ0aW9fdnNvY2tfdXNyX2hkcl9w cmVmICopcGFnZV90b192aXJ0KHZ2cy0+dXNyX3BvbGxfcGFnZSk7DQorDQorCQkJaGRyLT5wb2xs X3ZhbHVlID0gMHhmZmZmZmZmZjsNCisJCX0NCisNCisJCXNwaW5fdW5sb2NrX2JoKCZ2dnMtPnJ4 X2xvY2spOw0KKw0KIAkJaWYgKHZzay0+cGVlcl9zaHV0ZG93biA9PSBTSFVURE9XTl9NQVNLICYm DQogCQkgICAgdnNvY2tfc3RyZWFtX2hhc19kYXRhKHZzaykgPD0gMCAmJg0KIAkJICAgICFzb2Nr X2ZsYWcoc2ssIFNPQ0tfRE9ORSkpIHsNCkBAIC0xMzQzLDExICsxNTY5LDIxIEBAIEVYUE9SVF9T WU1CT0xfR1BMKHZpcnRpb190cmFuc3BvcnRfcmVjdl9wa3QpOw0KIHZvaWQgdmlydGlvX3RyYW5z cG9ydF9mcmVlX3BrdChzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdCAqcGt0KQ0KIHsNCiAJaWYgKHBr dC0+YnVmX2xlbikgew0KLQkJaWYgKHBrdC0+c2xhYl9idWYpDQorCQlpZiAocGt0LT5zbGFiX2J1 Zikgew0KIAkJCWt2ZnJlZShwa3QtPmJ1Zik7DQotCQllbHNlDQotCQkJZnJlZV9wYWdlcygodW5z aWduZWQgbG9uZylwa3QtPmJ1ZiwNCi0JCQkJICAgZ2V0X29yZGVyKHBrdC0+YnVmX2xlbikpOw0K KwkJfSBlbHNlIHsNCisJCQl1bnNpZ25lZCBpbnQgb3JkZXIgPSBnZXRfb3JkZXIocGt0LT5idWZf bGVuKTsNCisJCQl1bnNpZ25lZCBsb25nIGJ1ZiA9ICh1bnNpZ25lZCBsb25nKXBrdC0+YnVmOw0K Kw0KKwkJCWlmIChwa3QtPnNwbGl0KSB7DQorCQkJCWludCBpOw0KKw0KKwkJCQlmb3IgKGkgPSAw OyBpIDwgKDEgPDwgb3JkZXIpOyBpKyspDQorCQkJCQlmcmVlX3BhZ2UoYnVmICsgaSAqIFBBR0Vf U0laRSk7DQorCQkJfSBlbHNlIHsNCisJCQkJZnJlZV9wYWdlcyhidWYsIG9yZGVyKTsNCisJCQl9 DQorCQl9DQogCX0NCiANCiAJa2ZyZWUocGt0KTsNCi0tIA0KMi4zNS4wDQo=