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 smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 93889C433EF for ; Wed, 22 Jun 2022 12:16:37 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 18DBA84544; Wed, 22 Jun 2022 12:16:37 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 18DBA84544 Authentication-Results: smtp1.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=J3rLlm7h X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id M1LNwQGBNyaF; Wed, 22 Jun 2022 12:16:35 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTPS id 339188452E; Wed, 22 Jun 2022 12:16:35 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 339188452E Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 0B836C0039; Wed, 22 Jun 2022 12:16:35 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1E9A1C002D for ; Wed, 22 Jun 2022 12:16:33 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id DED0960ACA for ; Wed, 22 Jun 2022 12:16:32 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org DED0960ACA Authentication-Results: smtp3.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=J3rLlm7h X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WEVN1JCngY0R for ; Wed, 22 Jun 2022 12:16:31 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 3A5DA6059B Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 3A5DA6059B for ; Wed, 22 Jun 2022 12:16:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655900190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XoDeMBCeVzMlgBfTAwYB0I3631v+ktVlhk8JNQ3EZfU=; b=J3rLlm7hoGQ1iuGM8+TIBu4+7mEi4cSTFP6iDoP8mawss82DDFar74NMHGXaxwIFYY6pid es1G40gH9X8zvl2NlH8K4cDfC2zsKd/uELlyai6mVcDScZQH99KRn4hy0KeNxkeI+pXBBb fB7pRcOMWvnGOwhnYvdG/4DIWfDqkcU= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-449-XOxvPfLpPCW8yv1vnUDuGw-1; Wed, 22 Jun 2022 08:16:28 -0400 X-MC-Unique: XOxvPfLpPCW8yv1vnUDuGw-1 Received: by mail-wr1-f71.google.com with SMTP id e21-20020adfa455000000b0021b80b12356so3454511wra.5 for ; Wed, 22 Jun 2022 05:16:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=XoDeMBCeVzMlgBfTAwYB0I3631v+ktVlhk8JNQ3EZfU=; b=0M7mUZZEkh3QQlM8BiT7z2bz3S3ERxUVeCIQFmPdz42nn2Izr+34hv9rDb0Sz1vOu/ 4eRhCe1VXcwrqS1JGaSJFMib+yCPkWeVp4OvlOcE1uM0QV7rq6PCGjUg4AQCZ7P239gC fwb5XMVsdDYw8WQWDVCjLoAjdancUkAVLDnlj3MeR6abwunokSbH0kxhlYvNZ13fBe4m HofJqHd3N5j0GGictOGjeK8MInrmFie4GWn0POT85Ue2Fcjpzl4HtZsDmWQ2XPiNhHnA ybR2LlXAmbJER9/ZQP4Y/UPEnsEC/lIxDlsmvxQD7Ml/XMW8FsqKawJJILeN2AAl0HJi TqwA== X-Gm-Message-State: AJIora9TcR/y/ql9wra/jGZnmccBLTyucbSPm/FDLQFCGjAZtFC8gLKf MEQJSh+n95fG8kHfGdL9AncHZoXj0NF6WPzyyqbp2h51cFzu37nvK+pOTRSiNkRtIB2RfiTWsAN OHiJpjbzBTXbE4jDNwcPuXPdEsSJbLiHyR45F14vyBw== X-Received: by 2002:a05:600c:19c7:b0:39c:30b0:2b05 with SMTP id u7-20020a05600c19c700b0039c30b02b05mr3597024wmq.170.1655900187632; Wed, 22 Jun 2022 05:16:27 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sc9uxDXxMU62BbIEFuMDI9eM3c4B0YBdqfnGn471XscoRoAtj8LU6P6b5cA5xPMdZfZu8sEg== X-Received: by 2002:a05:600c:19c7:b0:39c:30b0:2b05 with SMTP id u7-20020a05600c19c700b0039c30b02b05mr3596990wmq.170.1655900187280; Wed, 22 Jun 2022 05:16:27 -0700 (PDT) Received: from redhat.com ([147.235.217.93]) by smtp.gmail.com with ESMTPSA id h17-20020a05600c2cb100b00397393419e3sm26688154wmc.28.2022.06.22.05.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jun 2022 05:16:26 -0700 (PDT) Date: Wed, 22 Jun 2022 08:16:24 -0400 From: "Michael S. Tsirkin" To: Jason Wang Subject: Re: [PATCH v4] virtio_ring : keep used_wrap_counter in vq->last_used_idx Message-ID: <20220622081543-mutt-send-email-mst@kernel.org> References: <20220616101823-mutt-send-email-mst@kernel.org> <20220617020411.80367-1-huangjie.albert@bytedance.com> MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mst@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: Albert Huang , linux-kernel , yuanzhu@bytedance.com, virtualization X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gV2VkLCBKdW4gMjIsIDIwMjIgYXQgMDQ6NTE6MjJQTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPiBPbiBGcmksIEp1biAxNywgMjAyMiBhdCAxMDowNCBBTSBBbGJlcnQgSHVhbmcKPiA8aHVh bmdqaWUuYWxiZXJ0QGJ5dGVkYW5jZS5jb20+IHdyb3RlOgo+ID4KPiA+IEZyb206ICJodWFuZ2pp ZS5hbGJlcnQiIDxodWFuZ2ppZS5hbGJlcnRAYnl0ZWRhbmNlLmNvbT4KPiA+Cj4gPiB0aGUgdXNl ZF93cmFwX2NvdW50ZXIgYW5kIHRoZSB2cS0+bGFzdF91c2VkX2lkeCBtYXkgZ2V0Cj4gPiBvdXQg b2Ygc3luYyBpZiB0aGV5IGFyZSBzZXBhcmF0ZSBhc3NpZ25tZW5077yMYW5kIGludGVycnVwdAo+ ID4gbWlnaHQgdXNlIGFuIGluY29ycmVjdCB2YWx1ZSB0byBjaGVjayBmb3IgdGhlIHVzZWQgaW5k ZXguCj4gPgo+ID4gZm9yIGV4YW1wbGU6T09CIGFjY2Vzcwo+ID4ga3NvZnRpcnFkIG1heSBjb25z dW1lIHRoZSBwYWNrZXQgYW5kIGl0IHdpbGwgY2FsbDoKPiA+IHZpcnRuZXRfcG9sbAo+ID4gICAg ICAgICAtLT52aXJ0bmV0X3JlY2VpdmUKPiA+ICAgICAgICAgICAgICAgICAtLT52aXJ0cXVldWVf Z2V0X2J1Zl9jdHgKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIC0tPnZpcnRxdWV1ZV9nZXRf YnVmX2N0eF9wYWNrZWQKPiA+IGFuZCBpbiB2aXJ0cXVldWVfZ2V0X2J1Zl9jdHhfcGFja2VkOgo+ ID4KPiA+IHZxLT5sYXN0X3VzZWRfaWR4ICs9IHZxLT5wYWNrZWQuZGVzY19zdGF0ZVtpZF0ubnVt Owo+ID4gaWYgKHVubGlrZWx5KHZxLT5sYXN0X3VzZWRfaWR4ID49IHZxLT5wYWNrZWQudnJpbmcu bnVtKSkgewo+ID4gICAgICAgICAgdnEtPmxhc3RfdXNlZF9pZHggLT0gdnEtPnBhY2tlZC52cmlu Zy5udW07Cj4gPiAgICAgICAgICB2cS0+cGFja2VkLnVzZWRfd3JhcF9jb3VudGVyIF49IDE7Cj4g PiB9Cj4gPgo+ID4gaWYgYXQgdGhlIHNhbWUgdGltZSwgdGhlcmUgY29tZXMgYSB2cmluZyBpbnRl cnJ1cHTvvIxpbiB2cmluZ19pbnRlcnJ1cHQ6Cj4gPiB3ZSB3aWxsIGNhbGw6Cj4gPiB2cmluZ19p bnRlcnJ1cHQKPiA+ICAgICAgICAgLS0+bW9yZV91c2VkCj4gPiAgICAgICAgICAgICAgICAgLS0+ bW9yZV91c2VkX3BhY2tlZAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgLS0+aXNfdXNlZF9k ZXNjX3BhY2tlZAo+ID4gaW4gaXNfdXNlZF9kZXNjX3BhY2tlZCwgdGhlIGxhc3RfdXNlZF9pZHgg bWF5YmUgPj0gdnEtPnBhY2tlZC52cmluZy5udW0uCj4gPiBzbyB0aGlzIGNvdWxkIGNhc2UgYSBt ZW1vcnkgb3V0IG9mIGJvdW5kcyBidWcuCj4gPgo+ID4gdGhpcyBwYXRjaCBpcyB0byBrZWVwIHRo ZSB1c2VkX3dyYXBfY291bnRlciBpbiB2cS0+bGFzdF91c2VkX2lkeAo+ID4gc28gd2UgY2FuIGdl dCB0aGUgY29ycmVjdCB2YWx1ZSB0byBjaGVjayBmb3IgdXNlZCBpbmRleCBpbiBpbnRlcnJ1cHQu Cj4gPgo+ID4gdjMtPnY0Ogo+ID4gLSB1c2UgUkVBRF9PTkNFL1dSSVRFX09OQ0UgdG8gZ2V0L3Nl dCB2cS0+bGFzdF91c2VkX2lkeAo+ID4KPiA+IHYyLT52MzoKPiA+IC0gYWRkIGlubGluZSBmdW5j dGlvbiB0byBnZXQgdXNlZF93cmFwX2NvdW50ZXIgYW5kIGxhc3RfdXNlZAo+ID4gLSB3aGVuIHVz ZSB2cS0+bGFzdF91c2VkX2lkeCwgb25seSByZWFkIG9uY2UKPiA+ICAgaWYgdnEtPmxhc3RfdXNl ZF9pZHggaXMgcmVhZCB0d2ljZSwgdGhlIHZhbHVlcyBjYW4gYmUgaW5jb25zaXN0ZW50Lgo+ID4g LSB1c2UgbGFzdF91c2VkX2lkeCAmIH4oLSgxIDw8IFZSSU5HX1BBQ0tFRF9FVkVOVF9GX1dSQVBf Q1RSKSkKPiA+ICAgdG8gZ2V0IHRoZSBhbGwgYml0cyBiZWxvdyBWUklOR19QQUNLRURfRVZFTlRf Rl9XUkFQX0NUUgo+ID4KPiA+IHYxLT52MjoKPiA+IC0gcmV1c2UgdGhlIFZSSU5HX1BBQ0tFRF9F VkVOVF9GX1dSQVBfQ1RSCj4gPiAtIFJlbW92ZSBwYXJhbWV0ZXIganVkZ21lbnQgaW4gaXNfdXNl ZF9kZXNjX3BhY2tlZCwKPiA+IGJlY2F1c2UgaXQgY2FuJ3QgYmUgaWxsZWdhbAo+ID4KPiA+IFNp Z25lZC1vZmYtYnk6IGh1YW5namllLmFsYmVydCA8aHVhbmdqaWUuYWxiZXJ0QGJ5dGVkYW5jZS5j b20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jIHwgNzUgKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDQ3IGlu c2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpcnRpby92aXJ0aW9fcmluZy5jIGIvZHJpdmVycy92aXJ0aW8vdmlydGlvX3JpbmcuYwo+ID4g aW5kZXggMTNhNzM0OGNlZGZmLi43MTlmYmJlNzE2ZDYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L3ZpcnRpby92aXJ0aW9fcmluZy5jCj4gPiArKysgYi9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmlu Zy5jCj4gPiBAQCAtMTExLDcgKzExMSwxMiBAQCBzdHJ1Y3QgdnJpbmdfdmlydHF1ZXVlIHsKPiA+ ICAgICAgICAgLyogTnVtYmVyIHdlJ3ZlIGFkZGVkIHNpbmNlIGxhc3Qgc3luYy4gKi8KPiA+ICAg ICAgICAgdW5zaWduZWQgaW50IG51bV9hZGRlZDsKPiA+Cj4gPiAtICAgICAgIC8qIExhc3QgdXNl ZCBpbmRleCB3ZSd2ZSBzZWVuLiAqLwo+ID4gKyAgICAgICAvKiBMYXN0IHVzZWQgaW5kZXggIHdl J3ZlIHNlZW4uCj4gPiArICAgICAgICAqIGZvciBzcGxpdCByaW5nLCBpdCBqdXN0IGNvbnRhaW5z IGxhc3QgdXNlZCBpbmRleAo+ID4gKyAgICAgICAgKiBmb3IgcGFja2VkIHJpbmc6Cj4gPiArICAg ICAgICAqIGJpdHMgdXAgdG8gVlJJTkdfUEFDS0VEX0VWRU5UX0ZfV1JBUF9DVFIgaW5jbHVkZSB0 aGUgbGFzdCB1c2VkIGluZGV4Lgo+ID4gKyAgICAgICAgKiBiaXRzIGZyb20gVlJJTkdfUEFDS0VE X0VWRU5UX0ZfV1JBUF9DVFIgaW5jbHVkZSB0aGUgdXNlZCB3cmFwIGNvdW50ZXIuCj4gPiArICAg ICAgICAqLwo+ID4gICAgICAgICB1MTYgbGFzdF91c2VkX2lkeDsKPiA+Cj4gPiAgICAgICAgIC8q IEhpbnQgZm9yIGV2ZW50IGlkeDogYWxyZWFkeSB0cmlnZ2VyZWQgbm8gbmVlZCB0byBkaXNhYmxl LiAqLwo+ID4gQEAgLTE1NCw5ICsxNTksNiBAQCBzdHJ1Y3QgdnJpbmdfdmlydHF1ZXVlIHsKPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERyaXZlciByaW5nIHdyYXAgY291bnRlci4gKi8K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXZhaWxfd3JhcF9jb3VudGVyOwo+ID4K PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIC8qIERldmljZSByaW5nIHdyYXAgY291bnRlci4g Ki8KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlZF93cmFwX2NvdW50ZXI7Cj4g PiAtCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdmFpbCB1c2VkIGZsYWdzLiAqLwo+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgdTE2IGF2YWlsX3VzZWRfZmxhZ3M7Cj4gPgo+ID4g QEAgLTk3Myw2ICs5NzUsMTUgQEAgc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKnZyaW5nX2NyZWF0 ZV92aXJ0cXVldWVfc3BsaXQoCj4gPiAgLyoKPiA+ICAgKiBQYWNrZWQgcmluZyBzcGVjaWZpYyBm dW5jdGlvbnMgLSAqX3BhY2tlZCgpLgo+ID4gICAqLwo+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbCBw YWNrZWRfdXNlZF93cmFwX2NvdW50ZXIodTE2IGxhc3RfdXNlZF9pZHgpCj4gPiArewo+ID4gKyAg ICAgICByZXR1cm4gISEobGFzdF91c2VkX2lkeCAmICgxIDw8IFZSSU5HX1BBQ0tFRF9FVkVOVF9G X1dSQVBfQ1RSKSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgdTE2IHBhY2tlZF9s YXN0X3VzZWQodTE2IGxhc3RfdXNlZF9pZHgpCj4gPiArewo+ID4gKyAgICAgICByZXR1cm4gbGFz dF91c2VkX2lkeCAmIH4oLSgxIDw8IFZSSU5HX1BBQ0tFRF9FVkVOVF9GX1dSQVBfQ1RSKSk7Cj4g PiArfQo+IAo+IEFueSByZWFzb24gd2UgbmVlZCBhIG1pbnVzIGFmdGVyIHRoZSBzaGlmdD8KClRo ZSBwb2ludCBpcyB0byBzYXkgImFsbCBiaXRzIGFib3ZlIFZSSU5HX1BBQ0tFRF9FVkVOVF9GX1dS QVBfQ1RSIi4KSGFzIG5vIGVmZmVjdCBjdXJyZW50bHkgYnV0IHdpbGwgaWYgbGFzdF91c2VkX2lk eCBpcyBleHRlbmRlZCB0byAzMiBiaXQuCgoKPiBPdGhlcnMgbG9vayBnb29kLgo+IAo+IFRoYW5r cwo+IAo+ID4KPiA+ICBzdGF0aWMgdm9pZCB2cmluZ191bm1hcF9leHRyYV9wYWNrZWQoY29uc3Qg c3RydWN0IHZyaW5nX3ZpcnRxdWV1ZSAqdnEsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHZyaW5nX2Rlc2NfZXh0cmEgKmV4dHJhKQo+ID4gQEAgLTE0MDYs OCArMTQxNywxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfdXNlZF9kZXNjX3BhY2tlZChjb25z dCBzdHJ1Y3QgdnJpbmdfdmlydHF1ZXVlICp2cSwKPiA+Cj4gPiAgc3RhdGljIGlubGluZSBib29s IG1vcmVfdXNlZF9wYWNrZWQoY29uc3Qgc3RydWN0IHZyaW5nX3ZpcnRxdWV1ZSAqdnEpCj4gPiAg ewo+ID4gLSAgICAgICByZXR1cm4gaXNfdXNlZF9kZXNjX3BhY2tlZCh2cSwgdnEtPmxhc3RfdXNl ZF9pZHgsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICB2cS0+cGFja2VkLnVzZWRfd3JhcF9j b3VudGVyKTsKPiA+ICsgICAgICAgdTE2IGxhc3RfdXNlZDsKPiA+ICsgICAgICAgdTE2IGxhc3Rf dXNlZF9pZHg7Cj4gPiArICAgICAgIGJvb2wgdXNlZF93cmFwX2NvdW50ZXI7Cj4gPiArCj4gPiAr ICAgICAgIGxhc3RfdXNlZF9pZHggPSBSRUFEX09OQ0UodnEtPmxhc3RfdXNlZF9pZHgpOwo+ID4g KyAgICAgICBsYXN0X3VzZWQgPSBwYWNrZWRfbGFzdF91c2VkKGxhc3RfdXNlZF9pZHgpOwo+ID4g KyAgICAgICB1c2VkX3dyYXBfY291bnRlciA9IHBhY2tlZF91c2VkX3dyYXBfY291bnRlcihsYXN0 X3VzZWRfaWR4KTsKPiA+ICsgICAgICAgcmV0dXJuIGlzX3VzZWRfZGVzY19wYWNrZWQodnEsIGxh c3RfdXNlZCwgdXNlZF93cmFwX2NvdW50ZXIpOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIHZvaWQg KnZpcnRxdWV1ZV9nZXRfYnVmX2N0eF9wYWNrZWQoc3RydWN0IHZpcnRxdWV1ZSAqX3ZxLAo+ID4g QEAgLTE0MTUsNyArMTQzMiw4IEBAIHN0YXRpYyB2b2lkICp2aXJ0cXVldWVfZ2V0X2J1Zl9jdHhf cGFja2VkKHN0cnVjdCB2aXJ0cXVldWUgKl92cSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKipjdHgpCj4gPiAgewo+ID4gICAgICAgICBzdHJ1Y3Qg dnJpbmdfdmlydHF1ZXVlICp2cSA9IHRvX3Z2cShfdnEpOwo+ID4gLSAgICAgICB1MTYgbGFzdF91 c2VkLCBpZDsKPiA+ICsgICAgICAgdTE2IGxhc3RfdXNlZCwgaWQsIGxhc3RfdXNlZF9pZHg7Cj4g PiArICAgICAgIGJvb2wgdXNlZF93cmFwX2NvdW50ZXI7Cj4gPiAgICAgICAgIHZvaWQgKnJldDsK PiA+Cj4gPiAgICAgICAgIFNUQVJUX1VTRSh2cSk7Cj4gPiBAQCAtMTQzNCw3ICsxNDUyLDkgQEAg c3RhdGljIHZvaWQgKnZpcnRxdWV1ZV9nZXRfYnVmX2N0eF9wYWNrZWQoc3RydWN0IHZpcnRxdWV1 ZSAqX3ZxLAo+ID4gICAgICAgICAvKiBPbmx5IGdldCB1c2VkIGVsZW1lbnRzIGFmdGVyIHRoZXkg aGF2ZSBiZWVuIGV4cG9zZWQgYnkgaG9zdC4gKi8KPiA+ICAgICAgICAgdmlydGlvX3JtYih2cS0+ d2Vha19iYXJyaWVycyk7Cj4gPgo+ID4gLSAgICAgICBsYXN0X3VzZWQgPSB2cS0+bGFzdF91c2Vk X2lkeDsKPiA+ICsgICAgICAgbGFzdF91c2VkX2lkeCA9IFJFQURfT05DRSh2cS0+bGFzdF91c2Vk X2lkeCk7Cj4gPiArICAgICAgIHVzZWRfd3JhcF9jb3VudGVyID0gcGFja2VkX3VzZWRfd3JhcF9j b3VudGVyKGxhc3RfdXNlZF9pZHgpOwo+ID4gKyAgICAgICBsYXN0X3VzZWQgPSBwYWNrZWRfbGFz dF91c2VkKGxhc3RfdXNlZF9pZHgpOwo+ID4gICAgICAgICBpZCA9IGxlMTZfdG9fY3B1KHZxLT5w YWNrZWQudnJpbmcuZGVzY1tsYXN0X3VzZWRdLmlkKTsKPiA+ICAgICAgICAgKmxlbiA9IGxlMzJf dG9fY3B1KHZxLT5wYWNrZWQudnJpbmcuZGVzY1tsYXN0X3VzZWRdLmxlbik7Cj4gPgo+ID4gQEAg LTE0NTEsMTIgKzE0NzEsMTUgQEAgc3RhdGljIHZvaWQgKnZpcnRxdWV1ZV9nZXRfYnVmX2N0eF9w YWNrZWQoc3RydWN0IHZpcnRxdWV1ZSAqX3ZxLAo+ID4gICAgICAgICByZXQgPSB2cS0+cGFja2Vk LmRlc2Nfc3RhdGVbaWRdLmRhdGE7Cj4gPiAgICAgICAgIGRldGFjaF9idWZfcGFja2VkKHZxLCBp ZCwgY3R4KTsKPiA+Cj4gPiAtICAgICAgIHZxLT5sYXN0X3VzZWRfaWR4ICs9IHZxLT5wYWNrZWQu ZGVzY19zdGF0ZVtpZF0ubnVtOwo+ID4gLSAgICAgICBpZiAodW5saWtlbHkodnEtPmxhc3RfdXNl ZF9pZHggPj0gdnEtPnBhY2tlZC52cmluZy5udW0pKSB7Cj4gPiAtICAgICAgICAgICAgICAgdnEt Pmxhc3RfdXNlZF9pZHggLT0gdnEtPnBhY2tlZC52cmluZy5udW07Cj4gPiAtICAgICAgICAgICAg ICAgdnEtPnBhY2tlZC51c2VkX3dyYXBfY291bnRlciBePSAxOwo+ID4gKyAgICAgICBsYXN0X3Vz ZWQgKz0gdnEtPnBhY2tlZC5kZXNjX3N0YXRlW2lkXS5udW07Cj4gPiArICAgICAgIGlmICh1bmxp a2VseShsYXN0X3VzZWQgPj0gdnEtPnBhY2tlZC52cmluZy5udW0pKSB7Cj4gPiArICAgICAgICAg ICAgICAgbGFzdF91c2VkIC09IHZxLT5wYWNrZWQudnJpbmcubnVtOwo+ID4gKyAgICAgICAgICAg ICAgIHVzZWRfd3JhcF9jb3VudGVyIF49IDE7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiArICAgICAg IGxhc3RfdXNlZCA9IChsYXN0X3VzZWQgfCAodXNlZF93cmFwX2NvdW50ZXIgPDwgVlJJTkdfUEFD S0VEX0VWRU5UX0ZfV1JBUF9DVFIpKTsKPiA+ICsgICAgICAgV1JJVEVfT05DRSh2cS0+bGFzdF91 c2VkX2lkeCwgbGFzdF91c2VkKTsKPiA+ICsKPiA+ICAgICAgICAgLyoKPiA+ICAgICAgICAgICog SWYgd2UgZXhwZWN0IGFuIGludGVycnVwdCBmb3IgdGhlIG5leHQgZW50cnksIHRlbGwgaG9zdAo+ ID4gICAgICAgICAgKiBieSB3cml0aW5nIGV2ZW50IGluZGV4IGFuZCBmbHVzaCBvdXQgdGhlIHdy aXRlIGJlZm9yZQo+ID4gQEAgLTE0NjUsOSArMTQ4OCw3IEBAIHN0YXRpYyB2b2lkICp2aXJ0cXVl dWVfZ2V0X2J1Zl9jdHhfcGFja2VkKHN0cnVjdCB2aXJ0cXVldWUgKl92cSwKPiA+ICAgICAgICAg aWYgKHZxLT5wYWNrZWQuZXZlbnRfZmxhZ3Nfc2hhZG93ID09IFZSSU5HX1BBQ0tFRF9FVkVOVF9G TEFHX0RFU0MpCj4gPiAgICAgICAgICAgICAgICAgdmlydGlvX3N0b3JlX21iKHZxLT53ZWFrX2Jh cnJpZXJzLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdnEtPnBhY2tlZC52 cmluZy5kcml2ZXItPm9mZl93cmFwLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjcHVfdG9fbGUxNih2cS0+bGFzdF91c2VkX2lkeCB8Cj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHZxLT5wYWNrZWQudXNlZF93cmFwX2NvdW50ZXIgPDwKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlJJTkdfUEFDS0VEX0VW RU5UX0ZfV1JBUF9DVFIpKSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNw dV90b19sZTE2KHZxLT5sYXN0X3VzZWRfaWR4KSk7Cj4gPgo+ID4gICAgICAgICBMQVNUX0FERF9U SU1FX0lOVkFMSUQodnEpOwo+ID4KPiA+IEBAIC0xNDk5LDkgKzE1MjAsNyBAQCBzdGF0aWMgdW5z aWduZWQgaW50IHZpcnRxdWV1ZV9lbmFibGVfY2JfcHJlcGFyZV9wYWNrZWQoc3RydWN0IHZpcnRx dWV1ZSAqX3ZxKQo+ID4KPiA+ICAgICAgICAgaWYgKHZxLT5ldmVudCkgewo+ID4gICAgICAgICAg ICAgICAgIHZxLT5wYWNrZWQudnJpbmcuZHJpdmVyLT5vZmZfd3JhcCA9Cj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICBjcHVfdG9fbGUxNih2cS0+bGFzdF91c2VkX2lkeCB8Cj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh2cS0+cGFja2VkLnVzZWRfd3JhcF9jb3VudGVyIDw8 Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWUklOR19QQUNLRURfRVZFTlRf Rl9XUkFQX0NUUikpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY3B1X3RvX2xlMTYodnEt Pmxhc3RfdXNlZF9pZHgpOwo+ID4gICAgICAgICAgICAgICAgIC8qCj4gPiAgICAgICAgICAgICAg ICAgICogV2UgbmVlZCB0byB1cGRhdGUgZXZlbnQgb2Zmc2V0IGFuZCBldmVudCB3cmFwCj4gPiAg ICAgICAgICAgICAgICAgICogY291bnRlciBmaXJzdCBiZWZvcmUgdXBkYXRpbmcgZXZlbnQgZmxh Z3MuCj4gPiBAQCAtMTUxOCw4ICsxNTM3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCB2aXJ0cXVl dWVfZW5hYmxlX2NiX3ByZXBhcmVfcGFja2VkKHN0cnVjdCB2aXJ0cXVldWUgKl92cSkKPiA+ICAg ICAgICAgfQo+ID4KPiA+ICAgICAgICAgRU5EX1VTRSh2cSk7Cj4gPiAtICAgICAgIHJldHVybiB2 cS0+bGFzdF91c2VkX2lkeCB8ICgodTE2KXZxLT5wYWNrZWQudXNlZF93cmFwX2NvdW50ZXIgPDwK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgIFZSSU5HX1BBQ0tFRF9FVkVOVF9GX1dSQVBfQ1RS KTsKPiA+ICsgICAgICAgcmV0dXJuIHZxLT5sYXN0X3VzZWRfaWR4Owo+ID4gIH0KPiA+Cj4gPiAg c3RhdGljIGJvb2wgdmlydHF1ZXVlX3BvbGxfcGFja2VkKHN0cnVjdCB2aXJ0cXVldWUgKl92cSwg dTE2IG9mZl93cmFwKQo+ID4gQEAgLTE1MzcsNyArMTU1NSw3IEBAIHN0YXRpYyBib29sIHZpcnRx dWV1ZV9wb2xsX3BhY2tlZChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsIHUxNiBvZmZfd3JhcCkKPiA+ ICBzdGF0aWMgYm9vbCB2aXJ0cXVldWVfZW5hYmxlX2NiX2RlbGF5ZWRfcGFja2VkKHN0cnVjdCB2 aXJ0cXVldWUgKl92cSkKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCB2cmluZ192aXJ0cXVldWUg KnZxID0gdG9fdnZxKF92cSk7Cj4gPiAtICAgICAgIHUxNiB1c2VkX2lkeCwgd3JhcF9jb3VudGVy Owo+ID4gKyAgICAgICB1MTYgdXNlZF9pZHgsIHdyYXBfY291bnRlciwgbGFzdF91c2VkX2lkeDsK PiA+ICAgICAgICAgdTE2IGJ1ZnM7Cj4gPgo+ID4gICAgICAgICBTVEFSVF9VU0UodnEpOwo+ID4g QEAgLTE1NTAsOSArMTU2OCwxMCBAQCBzdGF0aWMgYm9vbCB2aXJ0cXVldWVfZW5hYmxlX2NiX2Rl bGF5ZWRfcGFja2VkKHN0cnVjdCB2aXJ0cXVldWUgKl92cSkKPiA+ICAgICAgICAgaWYgKHZxLT5l dmVudCkgewo+ID4gICAgICAgICAgICAgICAgIC8qIFRPRE86IHR1bmUgdGhpcyB0aHJlc2hvbGQg Ki8KPiA+ICAgICAgICAgICAgICAgICBidWZzID0gKHZxLT5wYWNrZWQudnJpbmcubnVtIC0gdnEt PnZxLm51bV9mcmVlKSAqIDMgLyA0Owo+ID4gLSAgICAgICAgICAgICAgIHdyYXBfY291bnRlciA9 IHZxLT5wYWNrZWQudXNlZF93cmFwX2NvdW50ZXI7Cj4gPiArICAgICAgICAgICAgICAgbGFzdF91 c2VkX2lkeCA9IFJFQURfT05DRSh2cS0+bGFzdF91c2VkX2lkeCk7Cj4gPiArICAgICAgICAgICAg ICAgd3JhcF9jb3VudGVyID0gcGFja2VkX3VzZWRfd3JhcF9jb3VudGVyKGxhc3RfdXNlZF9pZHgp Owo+ID4KPiA+IC0gICAgICAgICAgICAgICB1c2VkX2lkeCA9IHZxLT5sYXN0X3VzZWRfaWR4ICsg YnVmczsKPiA+ICsgICAgICAgICAgICAgICB1c2VkX2lkeCA9IHBhY2tlZF9sYXN0X3VzZWQobGFz dF91c2VkX2lkeCkgKyBidWZzOwo+ID4gICAgICAgICAgICAgICAgIGlmICh1c2VkX2lkeCA+PSB2 cS0+cGFja2VkLnZyaW5nLm51bSkgewo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZF9p ZHggLT0gdnEtPnBhY2tlZC52cmluZy5udW07Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB3 cmFwX2NvdW50ZXIgXj0gMTsKPiA+IEBAIC0xNTgyLDkgKzE2MDEsMTAgQEAgc3RhdGljIGJvb2wg dmlydHF1ZXVlX2VuYWJsZV9jYl9kZWxheWVkX3BhY2tlZChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEp Cj4gPiAgICAgICAgICAqLwo+ID4gICAgICAgICB2aXJ0aW9fbWIodnEtPndlYWtfYmFycmllcnMp Owo+ID4KPiA+IC0gICAgICAgaWYgKGlzX3VzZWRfZGVzY19wYWNrZWQodnEsCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZxLT5sYXN0X3VzZWRfaWR4LAo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2cS0+cGFja2VkLnVzZWRfd3JhcF9jb3VudGVyKSkgewo+ ID4gKyAgICAgICBsYXN0X3VzZWRfaWR4ID0gUkVBRF9PTkNFKHZxLT5sYXN0X3VzZWRfaWR4KTsK PiA+ICsgICAgICAgd3JhcF9jb3VudGVyID0gcGFja2VkX3VzZWRfd3JhcF9jb3VudGVyKGxhc3Rf dXNlZF9pZHgpOwo+ID4gKyAgICAgICB1c2VkX2lkeCA9IHBhY2tlZF9sYXN0X3VzZWQobGFzdF91 c2VkX2lkeCk7Cj4gPiArICAgICAgIGlmIChpc191c2VkX2Rlc2NfcGFja2VkKHZxLCB1c2VkX2lk eCwgd3JhcF9jb3VudGVyKSkgewo+ID4gICAgICAgICAgICAgICAgIEVORF9VU0UodnEpOwo+ID4g ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICAgICAgICAgfQo+ID4gQEAgLTE2ODks NyArMTcwOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICp2cmluZ19jcmVhdGVfdmlydHF1 ZXVlX3BhY2tlZCgKPiA+ICAgICAgICAgdnEtPm5vdGlmeSA9IG5vdGlmeTsKPiA+ICAgICAgICAg dnEtPndlYWtfYmFycmllcnMgPSB3ZWFrX2JhcnJpZXJzOwo+ID4gICAgICAgICB2cS0+YnJva2Vu ID0gdHJ1ZTsKPiA+IC0gICAgICAgdnEtPmxhc3RfdXNlZF9pZHggPSAwOwo+ID4gKyAgICAgICB2 cS0+bGFzdF91c2VkX2lkeCA9IDAgfCAoMSA8PCBWUklOR19QQUNLRURfRVZFTlRfRl9XUkFQX0NU Uik7Cj4gPiAgICAgICAgIHZxLT5ldmVudF90cmlnZ2VyZWQgPSBmYWxzZTsKPiA+ICAgICAgICAg dnEtPm51bV9hZGRlZCA9IDA7Cj4gPiAgICAgICAgIHZxLT5wYWNrZWRfcmluZyA9IHRydWU7Cj4g PiBAQCAtMTcyMCw3ICsxNzQwLDYgQEAgc3RhdGljIHN0cnVjdCB2aXJ0cXVldWUgKnZyaW5nX2Ny ZWF0ZV92aXJ0cXVldWVfcGFja2VkKAo+ID4KPiA+ICAgICAgICAgdnEtPnBhY2tlZC5uZXh0X2F2 YWlsX2lkeCA9IDA7Cj4gPiAgICAgICAgIHZxLT5wYWNrZWQuYXZhaWxfd3JhcF9jb3VudGVyID0g MTsKPiA+IC0gICAgICAgdnEtPnBhY2tlZC51c2VkX3dyYXBfY291bnRlciA9IDE7Cj4gPiAgICAg ICAgIHZxLT5wYWNrZWQuZXZlbnRfZmxhZ3Nfc2hhZG93ID0gMDsKPiA+ICAgICAgICAgdnEtPnBh Y2tlZC5hdmFpbF91c2VkX2ZsYWdzID0gMSA8PCBWUklOR19QQUNLRURfREVTQ19GX0FWQUlMOwo+ ID4KPiA+IC0tCj4gPiAyLjMxLjEKPiA+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRp b25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRp b24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24= 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 81DEDC433EF for ; Wed, 22 Jun 2022 12:16:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235587AbiFVMQx (ORCPT ); Wed, 22 Jun 2022 08:16:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52810 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242442AbiFVMQp (ORCPT ); Wed, 22 Jun 2022 08:16:45 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3D7E336176 for ; Wed, 22 Jun 2022 05:16:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655900190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XoDeMBCeVzMlgBfTAwYB0I3631v+ktVlhk8JNQ3EZfU=; b=J3rLlm7hoGQ1iuGM8+TIBu4+7mEi4cSTFP6iDoP8mawss82DDFar74NMHGXaxwIFYY6pid es1G40gH9X8zvl2NlH8K4cDfC2zsKd/uELlyai6mVcDScZQH99KRn4hy0KeNxkeI+pXBBb fB7pRcOMWvnGOwhnYvdG/4DIWfDqkcU= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-197-jUlL5MkjPM2DNdVsst6E_A-1; Wed, 22 Jun 2022 08:16:29 -0400 X-MC-Unique: jUlL5MkjPM2DNdVsst6E_A-1 Received: by mail-wm1-f69.google.com with SMTP id m22-20020a7bcb96000000b0039c4f6ade4dso5468211wmi.8 for ; Wed, 22 Jun 2022 05:16:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=XoDeMBCeVzMlgBfTAwYB0I3631v+ktVlhk8JNQ3EZfU=; b=5SHRyV6ZEZvqEE0HLBQmFpSFX7ImasicK2z52lAzONaICmq3hHkZ1n3rEc/2znGznP f4x+rdWYF0Mdq+L5H7KxTcvlKMXi+MhVqz9+SKAKpz4ehYafMsi3+RTvIjV6kJJX1zS7 lsLkCJv7QEwcrLeM+6FcFozEQrPCcndV2IxoFV1/NPBlwjt4ajiV74aKOQ5ylzKMRO/1 HNPB9pTQqZbz/igeCHsNy+2O/BzJ6YllATumGsx0SFYNXKyaUNTp/XdsCkT4nyg0lKAk 0R5n86Z3CjCE5UDIXi5PFW5Esz9LMZfz97Qnx6rXnvls0HP90MWOY8fzR3lGL0DFmtY6 5NPg== X-Gm-Message-State: AJIora+i/KzMaWkv1gcbsNETyIGiIgRnx3BhWrdiy9GuPdtlykGcWLUU 2hViGhxTO/T0t/FOUGd5PKemBIVR3HZU5cH1wuJOi1imuBBAHBSvyhAjQJHfGaC4nK2d3VigCxz a8MUIpwZOZeQ/wGzQ6SLpSrGi X-Received: by 2002:a05:600c:19c7:b0:39c:30b0:2b05 with SMTP id u7-20020a05600c19c700b0039c30b02b05mr3597025wmq.170.1655900187633; Wed, 22 Jun 2022 05:16:27 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sc9uxDXxMU62BbIEFuMDI9eM3c4B0YBdqfnGn471XscoRoAtj8LU6P6b5cA5xPMdZfZu8sEg== X-Received: by 2002:a05:600c:19c7:b0:39c:30b0:2b05 with SMTP id u7-20020a05600c19c700b0039c30b02b05mr3596990wmq.170.1655900187280; Wed, 22 Jun 2022 05:16:27 -0700 (PDT) Received: from redhat.com ([147.235.217.93]) by smtp.gmail.com with ESMTPSA id h17-20020a05600c2cb100b00397393419e3sm26688154wmc.28.2022.06.22.05.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jun 2022 05:16:26 -0700 (PDT) Date: Wed, 22 Jun 2022 08:16:24 -0400 From: "Michael S. Tsirkin" To: Jason Wang Cc: Albert Huang , yuanzhu@bytedance.com, virtualization , linux-kernel Subject: Re: [PATCH v4] virtio_ring : keep used_wrap_counter in vq->last_used_idx Message-ID: <20220622081543-mutt-send-email-mst@kernel.org> References: <20220616101823-mutt-send-email-mst@kernel.org> <20220617020411.80367-1-huangjie.albert@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jun 22, 2022 at 04:51:22PM +0800, Jason Wang wrote: > On Fri, Jun 17, 2022 at 10:04 AM Albert Huang > wrote: > > > > From: "huangjie.albert" > > > > the used_wrap_counter and the vq->last_used_idx may get > > out of sync if they are separate assignment,and interrupt > > might use an incorrect value to check for the used index. > > > > for example:OOB access > > ksoftirqd may consume the packet and it will call: > > virtnet_poll > > -->virtnet_receive > > -->virtqueue_get_buf_ctx > > -->virtqueue_get_buf_ctx_packed > > and in virtqueue_get_buf_ctx_packed: > > > > vq->last_used_idx += vq->packed.desc_state[id].num; > > if (unlikely(vq->last_used_idx >= vq->packed.vring.num)) { > > vq->last_used_idx -= vq->packed.vring.num; > > vq->packed.used_wrap_counter ^= 1; > > } > > > > if at the same time, there comes a vring interrupt,in vring_interrupt: > > we will call: > > vring_interrupt > > -->more_used > > -->more_used_packed > > -->is_used_desc_packed > > in is_used_desc_packed, the last_used_idx maybe >= vq->packed.vring.num. > > so this could case a memory out of bounds bug. > > > > this patch is to keep the used_wrap_counter in vq->last_used_idx > > so we can get the correct value to check for used index in interrupt. > > > > v3->v4: > > - use READ_ONCE/WRITE_ONCE to get/set vq->last_used_idx > > > > v2->v3: > > - add inline function to get used_wrap_counter and last_used > > - when use vq->last_used_idx, only read once > > if vq->last_used_idx is read twice, the values can be inconsistent. > > - use last_used_idx & ~(-(1 << VRING_PACKED_EVENT_F_WRAP_CTR)) > > to get the all bits below VRING_PACKED_EVENT_F_WRAP_CTR > > > > v1->v2: > > - reuse the VRING_PACKED_EVENT_F_WRAP_CTR > > - Remove parameter judgment in is_used_desc_packed, > > because it can't be illegal > > > > Signed-off-by: huangjie.albert > > --- > > drivers/virtio/virtio_ring.c | 75 ++++++++++++++++++++++-------------- > > 1 file changed, 47 insertions(+), 28 deletions(-) > > > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > > index 13a7348cedff..719fbbe716d6 100644 > > --- a/drivers/virtio/virtio_ring.c > > +++ b/drivers/virtio/virtio_ring.c > > @@ -111,7 +111,12 @@ struct vring_virtqueue { > > /* Number we've added since last sync. */ > > unsigned int num_added; > > > > - /* Last used index we've seen. */ > > + /* Last used index we've seen. > > + * for split ring, it just contains last used index > > + * for packed ring: > > + * bits up to VRING_PACKED_EVENT_F_WRAP_CTR include the last used index. > > + * bits from VRING_PACKED_EVENT_F_WRAP_CTR include the used wrap counter. > > + */ > > u16 last_used_idx; > > > > /* Hint for event idx: already triggered no need to disable. */ > > @@ -154,9 +159,6 @@ struct vring_virtqueue { > > /* Driver ring wrap counter. */ > > bool avail_wrap_counter; > > > > - /* Device ring wrap counter. */ > > - bool used_wrap_counter; > > - > > /* Avail used flags. */ > > u16 avail_used_flags; > > > > @@ -973,6 +975,15 @@ static struct virtqueue *vring_create_virtqueue_split( > > /* > > * Packed ring specific functions - *_packed(). > > */ > > +static inline bool packed_used_wrap_counter(u16 last_used_idx) > > +{ > > + return !!(last_used_idx & (1 << VRING_PACKED_EVENT_F_WRAP_CTR)); > > +} > > + > > +static inline u16 packed_last_used(u16 last_used_idx) > > +{ > > + return last_used_idx & ~(-(1 << VRING_PACKED_EVENT_F_WRAP_CTR)); > > +} > > Any reason we need a minus after the shift? The point is to say "all bits above VRING_PACKED_EVENT_F_WRAP_CTR". Has no effect currently but will if last_used_idx is extended to 32 bit. > Others look good. > > Thanks > > > > > static void vring_unmap_extra_packed(const struct vring_virtqueue *vq, > > struct vring_desc_extra *extra) > > @@ -1406,8 +1417,14 @@ static inline bool is_used_desc_packed(const struct vring_virtqueue *vq, > > > > static inline bool more_used_packed(const struct vring_virtqueue *vq) > > { > > - return is_used_desc_packed(vq, vq->last_used_idx, > > - vq->packed.used_wrap_counter); > > + u16 last_used; > > + u16 last_used_idx; > > + bool used_wrap_counter; > > + > > + last_used_idx = READ_ONCE(vq->last_used_idx); > > + last_used = packed_last_used(last_used_idx); > > + used_wrap_counter = packed_used_wrap_counter(last_used_idx); > > + return is_used_desc_packed(vq, last_used, used_wrap_counter); > > } > > > > static void *virtqueue_get_buf_ctx_packed(struct virtqueue *_vq, > > @@ -1415,7 +1432,8 @@ static void *virtqueue_get_buf_ctx_packed(struct virtqueue *_vq, > > void **ctx) > > { > > struct vring_virtqueue *vq = to_vvq(_vq); > > - u16 last_used, id; > > + u16 last_used, id, last_used_idx; > > + bool used_wrap_counter; > > void *ret; > > > > START_USE(vq); > > @@ -1434,7 +1452,9 @@ static void *virtqueue_get_buf_ctx_packed(struct virtqueue *_vq, > > /* Only get used elements after they have been exposed by host. */ > > virtio_rmb(vq->weak_barriers); > > > > - last_used = vq->last_used_idx; > > + last_used_idx = READ_ONCE(vq->last_used_idx); > > + used_wrap_counter = packed_used_wrap_counter(last_used_idx); > > + last_used = packed_last_used(last_used_idx); > > id = le16_to_cpu(vq->packed.vring.desc[last_used].id); > > *len = le32_to_cpu(vq->packed.vring.desc[last_used].len); > > > > @@ -1451,12 +1471,15 @@ static void *virtqueue_get_buf_ctx_packed(struct virtqueue *_vq, > > ret = vq->packed.desc_state[id].data; > > detach_buf_packed(vq, id, ctx); > > > > - vq->last_used_idx += vq->packed.desc_state[id].num; > > - if (unlikely(vq->last_used_idx >= vq->packed.vring.num)) { > > - vq->last_used_idx -= vq->packed.vring.num; > > - vq->packed.used_wrap_counter ^= 1; > > + last_used += vq->packed.desc_state[id].num; > > + if (unlikely(last_used >= vq->packed.vring.num)) { > > + last_used -= vq->packed.vring.num; > > + used_wrap_counter ^= 1; > > } > > > > + last_used = (last_used | (used_wrap_counter << VRING_PACKED_EVENT_F_WRAP_CTR)); > > + WRITE_ONCE(vq->last_used_idx, last_used); > > + > > /* > > * If we expect an interrupt for the next entry, tell host > > * by writing event index and flush out the write before > > @@ -1465,9 +1488,7 @@ static void *virtqueue_get_buf_ctx_packed(struct virtqueue *_vq, > > if (vq->packed.event_flags_shadow == VRING_PACKED_EVENT_FLAG_DESC) > > virtio_store_mb(vq->weak_barriers, > > &vq->packed.vring.driver->off_wrap, > > - cpu_to_le16(vq->last_used_idx | > > - (vq->packed.used_wrap_counter << > > - VRING_PACKED_EVENT_F_WRAP_CTR))); > > + cpu_to_le16(vq->last_used_idx)); > > > > LAST_ADD_TIME_INVALID(vq); > > > > @@ -1499,9 +1520,7 @@ static unsigned int virtqueue_enable_cb_prepare_packed(struct virtqueue *_vq) > > > > if (vq->event) { > > vq->packed.vring.driver->off_wrap = > > - cpu_to_le16(vq->last_used_idx | > > - (vq->packed.used_wrap_counter << > > - VRING_PACKED_EVENT_F_WRAP_CTR)); > > + cpu_to_le16(vq->last_used_idx); > > /* > > * We need to update event offset and event wrap > > * counter first before updating event flags. > > @@ -1518,8 +1537,7 @@ static unsigned int virtqueue_enable_cb_prepare_packed(struct virtqueue *_vq) > > } > > > > END_USE(vq); > > - return vq->last_used_idx | ((u16)vq->packed.used_wrap_counter << > > - VRING_PACKED_EVENT_F_WRAP_CTR); > > + return vq->last_used_idx; > > } > > > > static bool virtqueue_poll_packed(struct virtqueue *_vq, u16 off_wrap) > > @@ -1537,7 +1555,7 @@ static bool virtqueue_poll_packed(struct virtqueue *_vq, u16 off_wrap) > > static bool virtqueue_enable_cb_delayed_packed(struct virtqueue *_vq) > > { > > struct vring_virtqueue *vq = to_vvq(_vq); > > - u16 used_idx, wrap_counter; > > + u16 used_idx, wrap_counter, last_used_idx; > > u16 bufs; > > > > START_USE(vq); > > @@ -1550,9 +1568,10 @@ static bool virtqueue_enable_cb_delayed_packed(struct virtqueue *_vq) > > if (vq->event) { > > /* TODO: tune this threshold */ > > bufs = (vq->packed.vring.num - vq->vq.num_free) * 3 / 4; > > - wrap_counter = vq->packed.used_wrap_counter; > > + last_used_idx = READ_ONCE(vq->last_used_idx); > > + wrap_counter = packed_used_wrap_counter(last_used_idx); > > > > - used_idx = vq->last_used_idx + bufs; > > + used_idx = packed_last_used(last_used_idx) + bufs; > > if (used_idx >= vq->packed.vring.num) { > > used_idx -= vq->packed.vring.num; > > wrap_counter ^= 1; > > @@ -1582,9 +1601,10 @@ static bool virtqueue_enable_cb_delayed_packed(struct virtqueue *_vq) > > */ > > virtio_mb(vq->weak_barriers); > > > > - if (is_used_desc_packed(vq, > > - vq->last_used_idx, > > - vq->packed.used_wrap_counter)) { > > + last_used_idx = READ_ONCE(vq->last_used_idx); > > + wrap_counter = packed_used_wrap_counter(last_used_idx); > > + used_idx = packed_last_used(last_used_idx); > > + if (is_used_desc_packed(vq, used_idx, wrap_counter)) { > > END_USE(vq); > > return false; > > } > > @@ -1689,7 +1709,7 @@ static struct virtqueue *vring_create_virtqueue_packed( > > vq->notify = notify; > > vq->weak_barriers = weak_barriers; > > vq->broken = true; > > - vq->last_used_idx = 0; > > + vq->last_used_idx = 0 | (1 << VRING_PACKED_EVENT_F_WRAP_CTR); > > vq->event_triggered = false; > > vq->num_added = 0; > > vq->packed_ring = true; > > @@ -1720,7 +1740,6 @@ static struct virtqueue *vring_create_virtqueue_packed( > > > > vq->packed.next_avail_idx = 0; > > vq->packed.avail_wrap_counter = 1; > > - vq->packed.used_wrap_counter = 1; > > vq->packed.event_flags_shadow = 0; > > vq->packed.avail_used_flags = 1 << VRING_PACKED_DESC_F_AVAIL; > > > > -- > > 2.31.1 > >