From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C78DC4708F for ; Thu, 3 Jun 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DB411613D4 for ; Thu, 3 Jun 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229697AbhFCCQc (ORCPT ); Wed, 2 Jun 2021 22:16:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:27392 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229541AbhFCCQb (ORCPT ); Wed, 2 Jun 2021 22:16:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1622686487; 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=zx/2l7D1S2LOGyjev2ybB3t/XTR+uhZMQmrvp1dzXq8=; b=iY2n+FfHmUzdT2A43jWn9qiwkDTJFFKLRYxotSCmBkK3QmvjCyzErCMIRRCxuDE86j8HTN Ho1hImNRn7BwbHg34ZJOhxHYWpz3RKXmu9m/u55djlE90Lxf7OEoRM0/ovwiWu5DNgtlr9 qgRjZla7/behVlRNk/IOkO9L15+s20c= Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-147-hCYzFfylMEanKTZ_HHqNzg-1; Wed, 02 Jun 2021 22:14:46 -0400 X-MC-Unique: hCYzFfylMEanKTZ_HHqNzg-1 Received: by mail-pl1-f197.google.com with SMTP id k6-20020a1709027606b0290104f319bb01so1934703pll.13 for ; Wed, 02 Jun 2021 19:14:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=zx/2l7D1S2LOGyjev2ybB3t/XTR+uhZMQmrvp1dzXq8=; b=rpPz0vhyTrfYEMLZ+5vKOJPHgCCgKdKmsKiymqWsSgBLHyNW+ssnfKPZvnWgScK3fM yA02Wyx7Lwex8+AcX0FL0r84ku9B5eSgTh8kTQRDs2ItbmkW9aL6zeCrTFobq/nzZ4iO egJ3o+9pG1kqM9FdCsUtPqEsVv74jvDcFEpb0/y26Ls7cCTbOaQKR7qjFWd33JoKaJcu Nbya8rFOSZO38dp6v3Tjkw3yJd0SY0bLvbuOAqVlMudtLtIdc1ZwzAV01gGHGkAI3Yr+ OkwQiR+IZ5yyMsYj5RxEm/TT53qBF3YdvMehUxrY18BNHitR1smN1oRO129zvlii3dE5 /4Vg== X-Gm-Message-State: AOAM533uuSuuIJHuKknAWoVkW7F+yZCkrRYqQKECoX36FQgoyU27c9fJ aMkOaF7eCo2Uudk5nKhReZqfAAWAcepEdK8EOX2RQkaSETLEV5g6ESszIGFNvCYN3Qlcu+PJQ32 hIMu7zOya/ZjOynQNJVZXkEQeP8WjFdnW1co1FZoDD9vjef+8MutcBFV4r2WoFPB/wLU87u3hlS yO X-Received: by 2002:a17:90a:dc04:: with SMTP id i4mr20603826pjv.75.1622686484916; Wed, 02 Jun 2021 19:14:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/nlLxc3rqkhZj4W7q+feSCqswQeiFEPfiB1UscaCkUiI3wRjQAIuNjtz/R8oNsSC9/V/iqw== X-Received: by 2002:a17:90a:dc04:: with SMTP id i4mr20603782pjv.75.1622686484427; Wed, 02 Jun 2021 19:14:44 -0700 (PDT) Received: from wangxiaodeMacBook-Air.local ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id k1sm701474pfa.30.2021.06.02.19.14.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 02 Jun 2021 19:14:44 -0700 (PDT) Subject: Re: [PATCH v1 2/8] virtio: Add boundary checks to virtio ring To: Andi Kleen , mst@redhat.com Cc: virtualization@lists.linux-foundation.org, hch@lst.de, m.szyprowski@samsung.com, robin.murphy@arm.com, iommu@lists.linux-foundation.org, x86@kernel.org, sathyanarayanan.kuppuswamy@linux.intel.com, jpoimboe@redhat.com, linux-kernel@vger.kernel.org References: <20210603004133.4079390-1-ak@linux.intel.com> <20210603004133.4079390-3-ak@linux.intel.com> From: Jason Wang Message-ID: <4be00b3a-a15f-7fee-317b-ddabed3c1347@redhat.com> Date: Thu, 3 Jun 2021 10:14:38 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: <20210603004133.4079390-3-ak@linux.intel.com> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ÔÚ 2021/6/3 ÉÏÎç8:41, Andi Kleen дµÀ: > In protected guest mode we don't trust the host. > > This means we need to make sure the host cannot subvert us through > virtio communication. In general it can corrupt our virtio data > and cause a DOS, but it should not be able to access any data > that is not explicitely under IO. > > Also boundary checking so that the free list (which is accessible > to the host) cannot point outside the virtio ring. Note it could > still contain loops or similar, but these should only cause an DOS, > not a memory corruption or leak. > > When we detect any out of bounds descriptor trigger an IO error. > We also use a WARN() (in case it was a software bug instead of > an attack). This implies that a malicious host can flood > the guest kernel log, but that's only a DOS and acceptable > in the threat model. > > This patch only hardens the initial consumption of the free list, > the freeing comes later. > > Any of these errors can cause DMA memory leaks, but there is nothing > we can do about that and that would be just a DOS. > > Signed-off-by: Andi Kleen > --- > drivers/virtio/virtio_ring.c | 46 ++++++++++++++++++++++++++++++++---- > 1 file changed, 42 insertions(+), 4 deletions(-) > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index f35629fa47b1..d37ff5a0ff58 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -413,6 +413,15 @@ static struct vring_desc *alloc_indirect_split(struct virtqueue *_vq, > return desc; > } > > +/* assumes no indirect mode */ > +static inline bool inside_split_ring(struct vring_virtqueue *vq, > + unsigned index) > +{ > + return !WARN(index >= vq->split.vring.num, > + "desc index %u out of bounds (%u)\n", > + index, vq->split.vring.num); It's better to use BAD_RING to stop virtqueue in this case. > +} > + > static inline int virtqueue_add_split(struct virtqueue *_vq, > struct scatterlist *sgs[], > unsigned int total_sg, > @@ -428,6 +437,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > unsigned int i, n, avail, descs_used, prev, err_idx; > int head; > bool indirect; > + int io_err; > > START_USE(vq); > > @@ -481,7 +491,13 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > > for (n = 0; n < out_sgs; n++) { > for (sg = sgs[n]; sg; sg = sg_next(sg)) { > - dma_addr_t addr = vring_map_one_sg(vq, sg, DMA_TO_DEVICE); > + dma_addr_t addr; > + > + io_err = -EIO; > + if (!inside_split_ring(vq, i)) > + goto unmap_release; > + io_err = -ENOMEM; > + addr = vring_map_one_sg(vq, sg, DMA_TO_DEVICE); > if (vring_mapping_error(vq, addr)) > goto unmap_release; > > @@ -494,7 +510,13 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > } > for (; n < (out_sgs + in_sgs); n++) { > for (sg = sgs[n]; sg; sg = sg_next(sg)) { > - dma_addr_t addr = vring_map_one_sg(vq, sg, DMA_FROM_DEVICE); > + dma_addr_t addr; > + > + io_err = -EIO; > + if (!inside_split_ring(vq, i)) > + goto unmap_release; > + io_err = -ENOMEM; > + addr = vring_map_one_sg(vq, sg, DMA_FROM_DEVICE); > if (vring_mapping_error(vq, addr)) > goto unmap_release; It looks to me all the evils came from the fact that we depends on the descriptor ring. So the checks in this patch could is unnecessary if we don't even read from the descriptor ring which could be manipulated by the device. This is what my series tries to achieve: https://www.spinics.net/lists/kvm/msg241825.html Thanks > > @@ -513,6 +535,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > dma_addr_t addr = vring_map_single( > vq, desc, total_sg * sizeof(struct vring_desc), > DMA_TO_DEVICE); > + io_err = -ENOMEM; > if (vring_mapping_error(vq, addr)) > goto unmap_release; > > @@ -528,6 +551,10 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > /* We're using some buffers from the free list. */ > vq->vq.num_free -= descs_used; > > + io_err = -EIO; > + if (!inside_split_ring(vq, head)) > + goto unmap_release; > + > /* Update free pointer */ > if (indirect) > vq->free_head = virtio16_to_cpu(_vq->vdev, > @@ -545,6 +572,10 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > /* Put entry in available array (but don't update avail->idx until they > * do sync). */ > avail = vq->split.avail_idx_shadow & (vq->split.vring.num - 1); > + > + if (avail >= vq->split.vring.num) > + goto unmap_release; > + > vq->split.vring.avail->ring[avail] = cpu_to_virtio16(_vq->vdev, head); > > /* Descriptors and available array need to be set before we expose the > @@ -576,6 +607,8 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > for (n = 0; n < total_sg; n++) { > if (i == err_idx) > break; > + if (!inside_split_ring(vq, i)) > + break; > vring_unmap_one_split(vq, &desc[i]); > i = virtio16_to_cpu(_vq->vdev, desc[i].next); > } > @@ -584,7 +617,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq, > kfree(desc); > > END_USE(vq); > - return -ENOMEM; > + return io_err; > } > > static bool virtqueue_kick_prepare_split(struct virtqueue *_vq) > @@ -1146,7 +1179,12 @@ static inline int virtqueue_add_packed(struct virtqueue *_vq, > c = 0; > for (n = 0; n < out_sgs + in_sgs; n++) { > for (sg = sgs[n]; sg; sg = sg_next(sg)) { > - dma_addr_t addr = vring_map_one_sg(vq, sg, n < out_sgs ? > + dma_addr_t addr; > + > + if (curr >= vq->packed.vring.num) > + goto unmap_release; > + > + addr = vring_map_one_sg(vq, sg, n < out_sgs ? > DMA_TO_DEVICE : DMA_FROM_DEVICE); > if (vring_mapping_error(vq, addr)) > goto unmap_release; From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6579EC47083 for ; Thu, 3 Jun 2021 02:14:54 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 289C8613F1 for ; Thu, 3 Jun 2021 02:14:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 289C8613F1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=iommu-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 854BF404D7; Thu, 3 Jun 2021 02:14:53 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hUVh4ZkRkfHk; Thu, 3 Jun 2021 02:14:52 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp2.osuosl.org (Postfix) with ESMTP id 2F1B0404E3; Thu, 3 Jun 2021 02:14:52 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 90A86C0025; Thu, 3 Jun 2021 02:14:51 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 764A6C0001 for ; Thu, 3 Jun 2021 02:14:50 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 581BF404E0 for ; Thu, 3 Jun 2021 02:14:50 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mbG2L0cpvF8d for ; Thu, 3 Jun 2021 02:14:49 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by smtp2.osuosl.org (Postfix) with ESMTPS id 44553404D7 for ; Thu, 3 Jun 2021 02:14:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1622686488; 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=zx/2l7D1S2LOGyjev2ybB3t/XTR+uhZMQmrvp1dzXq8=; b=QDPEaI/zl8IoNb/diBRNMxM2duUFVL6MLushPoPCjn2QsZwZbZhuse4ay0zAH80vQMioEq 3vWAG4lMBj7AbZqtz0t1M/r38ZqeN5Qf/lW1MSRwxPJPhnxwWNvMZEjqY1OctSJCH8LhGY UfhgqIoGr5gMYCPHbhWTzAxHVfXONTU= Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-271-fXgtqEFlNEqEnbuIVcUwhQ-1; Wed, 02 Jun 2021 22:14:45 -0400 X-MC-Unique: fXgtqEFlNEqEnbuIVcUwhQ-1 Received: by mail-pl1-f199.google.com with SMTP id x15-20020a170902e04fb02900f5295925dbso1939857plx.9 for ; Wed, 02 Jun 2021 19:14:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=zx/2l7D1S2LOGyjev2ybB3t/XTR+uhZMQmrvp1dzXq8=; b=fhOhOvb1nEP9jWHM4Cw6Wrev127L9RliiW9e4JrQtUkOc5dyr3ThJcaqkDHA/L7+J5 5h7YBP9QwUZjupaRJNxhLhqk53EqAh6zvZuQ1FVT/Z4D4s0Cx2Q3TWEdtKapMo21159S hJLsBig7Qy2pYkC6jWmzajyQE99ITpXyLQWZXTWHuaKKQlGTpBQDpxApSBlllzEuNnse kd1pdVTCzux95XAjqWx0v0jjzXlWvN7PD89KvmcWWVgDOVuQ9PQlXYoSTA8/Lj2pmPC5 TNgBl+05Q41mtOaYC0svXq5ovn6XNRZ94cUuBD+LkM404tiZpJHwQUIJkqGdPvMWEe86 JIyQ== X-Gm-Message-State: AOAM5333eA0JhOGQyZj9ut4EFrfAe05AWmuNIgmC65sm0d7uyd33yzEY oxDjYGxFqzACnkaACioNML5VU3CehUj2mG05O3yEMgMtz34oUXWrQDbMRCCSMNS8NCI5Az31eE3 Vmaa3YZa4IGZGD+bN6WhBotKd44F5gA== X-Received: by 2002:a17:90a:dc04:: with SMTP id i4mr20603813pjv.75.1622686484792; Wed, 02 Jun 2021 19:14:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/nlLxc3rqkhZj4W7q+feSCqswQeiFEPfiB1UscaCkUiI3wRjQAIuNjtz/R8oNsSC9/V/iqw== X-Received: by 2002:a17:90a:dc04:: with SMTP id i4mr20603782pjv.75.1622686484427; Wed, 02 Jun 2021 19:14:44 -0700 (PDT) Received: from wangxiaodeMacBook-Air.local ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id k1sm701474pfa.30.2021.06.02.19.14.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 02 Jun 2021 19:14:44 -0700 (PDT) Subject: Re: [PATCH v1 2/8] virtio: Add boundary checks to virtio ring To: Andi Kleen , mst@redhat.com References: <20210603004133.4079390-1-ak@linux.intel.com> <20210603004133.4079390-3-ak@linux.intel.com> From: Jason Wang Message-ID: <4be00b3a-a15f-7fee-317b-ddabed3c1347@redhat.com> Date: Thu, 3 Jun 2021 10:14:38 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: <20210603004133.4079390-3-ak@linux.intel.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: x86@kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, iommu@lists.linux-foundation.org, jpoimboe@redhat.com, robin.murphy@arm.com, hch@lst.de X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="gbk"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" CtTaIDIwMjEvNi8zIMnPzuc4OjQxLCBBbmRpIEtsZWVuINC0tcA6Cj4gSW4gcHJvdGVjdGVkIGd1 ZXN0IG1vZGUgd2UgZG9uJ3QgdHJ1c3QgdGhlIGhvc3QuCj4KPiBUaGlzIG1lYW5zIHdlIG5lZWQg dG8gbWFrZSBzdXJlIHRoZSBob3N0IGNhbm5vdCBzdWJ2ZXJ0IHVzIHRocm91Z2gKPiB2aXJ0aW8g Y29tbXVuaWNhdGlvbi4gSW4gZ2VuZXJhbCBpdCBjYW4gY29ycnVwdCBvdXIgdmlydGlvIGRhdGEK PiBhbmQgY2F1c2UgYSBET1MsIGJ1dCBpdCBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNjZXNzIGFu eSBkYXRhCj4gdGhhdCBpcyBub3QgZXhwbGljaXRlbHkgdW5kZXIgSU8uCj4KPiBBbHNvIGJvdW5k YXJ5IGNoZWNraW5nIHNvIHRoYXQgdGhlIGZyZWUgbGlzdCAod2hpY2ggaXMgYWNjZXNzaWJsZQo+ IHRvIHRoZSBob3N0KSBjYW5ub3QgcG9pbnQgb3V0c2lkZSB0aGUgdmlydGlvIHJpbmcuIE5vdGUg aXQgY291bGQKPiBzdGlsbCBjb250YWluIGxvb3BzIG9yIHNpbWlsYXIsIGJ1dCB0aGVzZSBzaG91 bGQgb25seSBjYXVzZSBhbiBET1MsCj4gbm90IGEgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbGVhay4K Pgo+IFdoZW4gd2UgZGV0ZWN0IGFueSBvdXQgb2YgYm91bmRzIGRlc2NyaXB0b3IgdHJpZ2dlciBh biBJTyBlcnJvci4KPiBXZSBhbHNvIHVzZSBhIFdBUk4oKSAoaW4gY2FzZSBpdCB3YXMgYSBzb2Z0 d2FyZSBidWcgaW5zdGVhZCBvZgo+IGFuIGF0dGFjaykuIFRoaXMgaW1wbGllcyB0aGF0IGEgbWFs aWNpb3VzIGhvc3QgY2FuIGZsb29kCj4gdGhlIGd1ZXN0IGtlcm5lbCBsb2csIGJ1dCB0aGF0J3Mg b25seSBhIERPUyBhbmQgYWNjZXB0YWJsZQo+IGluIHRoZSB0aHJlYXQgbW9kZWwuCj4KPiBUaGlz IHBhdGNoIG9ubHkgaGFyZGVucyB0aGUgaW5pdGlhbCBjb25zdW1wdGlvbiBvZiB0aGUgZnJlZSBs aXN0LAo+IHRoZSBmcmVlaW5nIGNvbWVzIGxhdGVyLgo+Cj4gQW55IG9mIHRoZXNlIGVycm9ycyBj YW4gY2F1c2UgRE1BIG1lbW9yeSBsZWFrcywgYnV0IHRoZXJlIGlzIG5vdGhpbmcKPiB3ZSBjYW4g ZG8gYWJvdXQgdGhhdCBhbmQgdGhhdCB3b3VsZCBiZSBqdXN0IGEgRE9TLgo+Cj4gU2lnbmVkLW9m Zi1ieTogQW5kaSBLbGVlbiA8YWtAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy92 aXJ0aW8vdmlydGlvX3JpbmcuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3JpbmcuYyBiL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19yaW5nLmMKPiBpbmRleCBmMzU2MjlmYTQ3YjEuLmQzN2ZmNWEwZmY1OCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jCj4gKysrIGIvZHJpdmVy cy92aXJ0aW8vdmlydGlvX3JpbmcuYwo+IEBAIC00MTMsNiArNDEzLDE1IEBAIHN0YXRpYyBzdHJ1 Y3QgdnJpbmdfZGVzYyAqYWxsb2NfaW5kaXJlY3Rfc3BsaXQoc3RydWN0IHZpcnRxdWV1ZSAqX3Zx LAo+ICAgCXJldHVybiBkZXNjOwo+ICAgfQo+ICAgCj4gKy8qIGFzc3VtZXMgbm8gaW5kaXJlY3Qg bW9kZSAqLwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW5zaWRlX3NwbGl0X3Jpbmcoc3RydWN0IHZy aW5nX3ZpcnRxdWV1ZSAqdnEsCj4gKwkJCQkgICAgIHVuc2lnbmVkIGluZGV4KQo+ICt7Cj4gKwly ZXR1cm4gIVdBUk4oaW5kZXggPj0gdnEtPnNwbGl0LnZyaW5nLm51bSwKPiArCQkgICAgImRlc2Mg aW5kZXggJXUgb3V0IG9mIGJvdW5kcyAoJXUpXG4iLAo+ICsJCSAgICBpbmRleCwgdnEtPnNwbGl0 LnZyaW5nLm51bSk7CgoKSXQncyBiZXR0ZXIgdG8gdXNlIEJBRF9SSU5HIHRvIHN0b3AgdmlydHF1 ZXVlIGluIHRoaXMgY2FzZS4KCgo+ICt9Cj4gKwo+ICAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1 ZXVlX2FkZF9zcGxpdChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAJCQkJICAgICAgc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZ3NbXSwKPiAgIAkJCQkgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfc2cs Cj4gQEAgLTQyOCw2ICs0MzcsNyBAQCBzdGF0aWMgaW5saW5lIGludCB2aXJ0cXVldWVfYWRkX3Nw bGl0KHN0cnVjdCB2aXJ0cXVldWUgKl92cSwKPiAgIAl1bnNpZ25lZCBpbnQgaSwgbiwgYXZhaWws IGRlc2NzX3VzZWQsIHByZXYsIGVycl9pZHg7Cj4gICAJaW50IGhlYWQ7Cj4gICAJYm9vbCBpbmRp cmVjdDsKPiArCWludCBpb19lcnI7Cj4gICAKPiAgIAlTVEFSVF9VU0UodnEpOwo+ICAgCj4gQEAg LTQ4MSw3ICs0OTEsMTMgQEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChz dHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAKPiAgIAlmb3IgKG4gPSAwOyBuIDwgb3V0X3Nnczsg bisrKSB7Cj4gICAJCWZvciAoc2cgPSBzZ3Nbbl07IHNnOyBzZyA9IHNnX25leHQoc2cpKSB7Cj4g LQkJCWRtYV9hZGRyX3QgYWRkciA9IHZyaW5nX21hcF9vbmVfc2codnEsIHNnLCBETUFfVE9fREVW SUNFKTsKPiArCQkJZG1hX2FkZHJfdCBhZGRyOwo+ICsKPiArCQkJaW9fZXJyID0gLUVJTzsKPiAr CQkJaWYgKCFpbnNpZGVfc3BsaXRfcmluZyh2cSwgaSkpCj4gKwkJCQlnb3RvIHVubWFwX3JlbGVh c2U7Cj4gKwkJCWlvX2VyciA9IC1FTk9NRU07Cj4gKwkJCWFkZHIgPSB2cmluZ19tYXBfb25lX3Nn KHZxLCBzZywgRE1BX1RPX0RFVklDRSk7Cj4gICAJCQlpZiAodnJpbmdfbWFwcGluZ19lcnJvcih2 cSwgYWRkcikpCj4gICAJCQkJZ290byB1bm1hcF9yZWxlYXNlOwo+ICAgCj4gQEAgLTQ5NCw3ICs1 MTAsMTMgQEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChzdHJ1Y3Qgdmly dHF1ZXVlICpfdnEsCj4gICAJfQo+ICAgCWZvciAoOyBuIDwgKG91dF9zZ3MgKyBpbl9zZ3MpOyBu KyspIHsKPiAgIAkJZm9yIChzZyA9IHNnc1tuXTsgc2c7IHNnID0gc2dfbmV4dChzZykpIHsKPiAt CQkJZG1hX2FkZHJfdCBhZGRyID0gdnJpbmdfbWFwX29uZV9zZyh2cSwgc2csIERNQV9GUk9NX0RF VklDRSk7Cj4gKwkJCWRtYV9hZGRyX3QgYWRkcjsKPiArCj4gKwkJCWlvX2VyciA9IC1FSU87Cj4g KwkJCWlmICghaW5zaWRlX3NwbGl0X3JpbmcodnEsIGkpKQo+ICsJCQkJZ290byB1bm1hcF9yZWxl YXNlOwo+ICsJCQlpb19lcnIgPSAtRU5PTUVNOwo+ICsJCQlhZGRyID0gdnJpbmdfbWFwX29uZV9z Zyh2cSwgc2csIERNQV9GUk9NX0RFVklDRSk7Cj4gICAJCQlpZiAodnJpbmdfbWFwcGluZ19lcnJv cih2cSwgYWRkcikpCj4gICAJCQkJZ290byB1bm1hcF9yZWxlYXNlOwoKCkl0IGxvb2tzIHRvIG1l IGFsbCB0aGUgZXZpbHMgY2FtZSBmcm9tIHRoZSBmYWN0IHRoYXQgd2UgZGVwZW5kcyBvbiB0aGUg CmRlc2NyaXB0b3IgcmluZy4KClNvIHRoZSBjaGVja3MgaW4gdGhpcyBwYXRjaCBjb3VsZCBpcyB1 bm5lY2Vzc2FyeSBpZiB3ZSBkb24ndCBldmVuIHJlYWQgCmZyb20gdGhlIGRlc2NyaXB0b3Igcmlu ZyB3aGljaCBjb3VsZCBiZSBtYW5pcHVsYXRlZCBieSB0aGUgZGV2aWNlLgoKVGhpcyBpcyB3aGF0 IG15IHNlcmllcyB0cmllcyB0byBhY2hpZXZlOgoKaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlz dHMva3ZtL21zZzI0MTgyNS5odG1sCgpUaGFua3MKCgoKPiAgIAo+IEBAIC01MTMsNiArNTM1LDcg QEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChzdHJ1Y3QgdmlydHF1ZXVl ICpfdnEsCj4gICAJCWRtYV9hZGRyX3QgYWRkciA9IHZyaW5nX21hcF9zaW5nbGUoCj4gICAJCQl2 cSwgZGVzYywgdG90YWxfc2cgKiBzaXplb2Yoc3RydWN0IHZyaW5nX2Rlc2MpLAo+ICAgCQkJRE1B X1RPX0RFVklDRSk7Cj4gKwkJaW9fZXJyID0gLUVOT01FTTsKPiAgIAkJaWYgKHZyaW5nX21hcHBp bmdfZXJyb3IodnEsIGFkZHIpKQo+ICAgCQkJZ290byB1bm1hcF9yZWxlYXNlOwo+ICAgCj4gQEAg LTUyOCw2ICs1NTEsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChz dHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAJLyogV2UncmUgdXNpbmcgc29tZSBidWZmZXJzIGZy b20gdGhlIGZyZWUgbGlzdC4gKi8KPiAgIAl2cS0+dnEubnVtX2ZyZWUgLT0gZGVzY3NfdXNlZDsK PiAgIAo+ICsJaW9fZXJyID0gLUVJTzsKPiArCWlmICghaW5zaWRlX3NwbGl0X3JpbmcodnEsIGhl YWQpKQo+ICsJCWdvdG8gdW5tYXBfcmVsZWFzZTsKPiArCj4gICAJLyogVXBkYXRlIGZyZWUgcG9p bnRlciAqLwo+ICAgCWlmIChpbmRpcmVjdCkKPiAgIAkJdnEtPmZyZWVfaGVhZCA9IHZpcnRpbzE2 X3RvX2NwdShfdnEtPnZkZXYsCj4gQEAgLTU0NSw2ICs1NzIsMTAgQEAgc3RhdGljIGlubGluZSBp bnQgdmlydHF1ZXVlX2FkZF9zcGxpdChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAJLyogUHV0 IGVudHJ5IGluIGF2YWlsYWJsZSBhcnJheSAoYnV0IGRvbid0IHVwZGF0ZSBhdmFpbC0+aWR4IHVu dGlsIHRoZXkKPiAgIAkgKiBkbyBzeW5jKS4gKi8KPiAgIAlhdmFpbCA9IHZxLT5zcGxpdC5hdmFp bF9pZHhfc2hhZG93ICYgKHZxLT5zcGxpdC52cmluZy5udW0gLSAxKTsKPiArCj4gKwlpZiAoYXZh aWwgPj0gdnEtPnNwbGl0LnZyaW5nLm51bSkKPiArCQlnb3RvIHVubWFwX3JlbGVhc2U7Cj4gKwo+ ICAgCXZxLT5zcGxpdC52cmluZy5hdmFpbC0+cmluZ1thdmFpbF0gPSBjcHVfdG9fdmlydGlvMTYo X3ZxLT52ZGV2LCBoZWFkKTsKPiAgIAo+ICAgCS8qIERlc2NyaXB0b3JzIGFuZCBhdmFpbGFibGUg YXJyYXkgbmVlZCB0byBiZSBzZXQgYmVmb3JlIHdlIGV4cG9zZSB0aGUKPiBAQCAtNTc2LDYgKzYw Nyw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHZpcnRxdWV1ZV9hZGRfc3BsaXQoc3RydWN0IHZpcnRx dWV1ZSAqX3ZxLAo+ICAgCWZvciAobiA9IDA7IG4gPCB0b3RhbF9zZzsgbisrKSB7Cj4gICAJCWlm IChpID09IGVycl9pZHgpCj4gICAJCQlicmVhazsKPiArCQlpZiAoIWluc2lkZV9zcGxpdF9yaW5n KHZxLCBpKSkKPiArCQkJYnJlYWs7Cj4gICAJCXZyaW5nX3VubWFwX29uZV9zcGxpdCh2cSwgJmRl c2NbaV0pOwo+ICAgCQlpID0gdmlydGlvMTZfdG9fY3B1KF92cS0+dmRldiwgZGVzY1tpXS5uZXh0 KTsKPiAgIAl9Cj4gQEAgLTU4NCw3ICs2MTcsNyBAQCBzdGF0aWMgaW5saW5lIGludCB2aXJ0cXVl dWVfYWRkX3NwbGl0KHN0cnVjdCB2aXJ0cXVldWUgKl92cSwKPiAgIAkJa2ZyZWUoZGVzYyk7Cj4g ICAKPiAgIAlFTkRfVVNFKHZxKTsKPiAtCXJldHVybiAtRU5PTUVNOwo+ICsJcmV0dXJuIGlvX2Vy cjsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGJvb2wgdmlydHF1ZXVlX2tpY2tfcHJlcGFyZV9zcGxp dChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEpCj4gQEAgLTExNDYsNyArMTE3OSwxMiBAQCBzdGF0aWMg aW5saW5lIGludCB2aXJ0cXVldWVfYWRkX3BhY2tlZChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4g ICAJYyA9IDA7Cj4gICAJZm9yIChuID0gMDsgbiA8IG91dF9zZ3MgKyBpbl9zZ3M7IG4rKykgewo+ ICAgCQlmb3IgKHNnID0gc2dzW25dOyBzZzsgc2cgPSBzZ19uZXh0KHNnKSkgewo+IC0JCQlkbWFf YWRkcl90IGFkZHIgPSB2cmluZ19tYXBfb25lX3NnKHZxLCBzZywgbiA8IG91dF9zZ3MgPwo+ICsJ CQlkbWFfYWRkcl90IGFkZHI7Cj4gKwo+ICsJCQlpZiAoY3VyciA+PSB2cS0+cGFja2VkLnZyaW5n Lm51bSkKPiArCQkJCWdvdG8gdW5tYXBfcmVsZWFzZTsKPiArCj4gKwkJCWFkZHIgPSB2cmluZ19t YXBfb25lX3NnKHZxLCBzZywgbiA8IG91dF9zZ3MgPwo+ICAgCQkJCQlETUFfVE9fREVWSUNFIDog RE1BX0ZST01fREVWSUNFKTsKPiAgIAkJCWlmICh2cmluZ19tYXBwaW5nX2Vycm9yKHZxLCBhZGRy KSkKPiAgIAkJCQlnb3RvIHVubWFwX3JlbGVhc2U7CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppb21tdSBtYWlsaW5nIGxpc3QKaW9tbXVAbGlzdHMubGlu dXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxt YW4vbGlzdGluZm8vaW9tbXU= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 929D0C4708F for ; Thu, 3 Jun 2021 02:14:53 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 435D4613D4 for ; Thu, 3 Jun 2021 02:14:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 435D4613D4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=virtualization-bounces@lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 0F1FB404E0; Thu, 3 Jun 2021 02:14:53 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gnY7wrBvNoDi; Thu, 3 Jun 2021 02:14:52 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp2.osuosl.org (Postfix) with ESMTP id 73906404D7; Thu, 3 Jun 2021 02:14:51 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 4392DC000E; Thu, 3 Jun 2021 02:14:51 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 4ACE9C0001 for ; Thu, 3 Jun 2021 02:14:50 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 38FBB834FC for ; Thu, 3 Jun 2021 02:14:50 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=redhat.com 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 lxVl09dkHijW for ; Thu, 3 Jun 2021 02:14:49 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp1.osuosl.org (Postfix) with ESMTPS id 190AB831FB for ; Thu, 3 Jun 2021 02:14:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1622686488; 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=zx/2l7D1S2LOGyjev2ybB3t/XTR+uhZMQmrvp1dzXq8=; b=QDPEaI/zl8IoNb/diBRNMxM2duUFVL6MLushPoPCjn2QsZwZbZhuse4ay0zAH80vQMioEq 3vWAG4lMBj7AbZqtz0t1M/r38ZqeN5Qf/lW1MSRwxPJPhnxwWNvMZEjqY1OctSJCH8LhGY UfhgqIoGr5gMYCPHbhWTzAxHVfXONTU= Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-442-m9cclWtVNB2bKGRE5iX49g-1; Wed, 02 Jun 2021 22:14:45 -0400 X-MC-Unique: m9cclWtVNB2bKGRE5iX49g-1 Received: by mail-pf1-f199.google.com with SMTP id l3-20020a056a001403b02902ea25d3c7d4so2019035pfu.15 for ; Wed, 02 Jun 2021 19:14:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=zx/2l7D1S2LOGyjev2ybB3t/XTR+uhZMQmrvp1dzXq8=; b=E+sQzLISaYkwFJOzwgd22t7PeLdHFIOFMBPXWWpfNwSYnE0kMxwNPx2j/iBABCYyqe Dl71JE9BTL5ae7ZfIHHZla37UYuDM0wJ3Ci/KsjAyHwGGcGUxOt2nJXtpzeEbgQasiJD oluQCmaN0QpK9aYGTFiCUEcfX0EeEPApgFRUg2DizdWL/iDvRPdFxNMwxtsyzDt9dUPB inH1bR9VDqKd9TgUZ9kRpAQ3QaY2Gss2LL2jBq3pPIxIw1hbSMBlqZTRSgiLqy2b5GFQ bTtaYfKLzkQpmWaG1va9Fg2tAFzP8wwGCT7Jw+vNkJtp2T4mCWMiyTy7bUPhIeWuSqXw r6Eg== X-Gm-Message-State: AOAM532iwv35PrwXTJeCRFbjOby1ucnMgq8lBQYCSmMakJKqfurpBVNQ KoklGTWGFAV5S4pdQ50CNHc+R9s+KWzQMxE1nqNiMdX2082zDuOGkJi7D7nY81aCs7p4f6qXFoJ AtRwcum8Sh7tMcLMSbzrCNI+mnhthquGqBFVP6UV0sg== X-Received: by 2002:a17:90a:dc04:: with SMTP id i4mr20603814pjv.75.1622686484793; Wed, 02 Jun 2021 19:14:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/nlLxc3rqkhZj4W7q+feSCqswQeiFEPfiB1UscaCkUiI3wRjQAIuNjtz/R8oNsSC9/V/iqw== X-Received: by 2002:a17:90a:dc04:: with SMTP id i4mr20603782pjv.75.1622686484427; Wed, 02 Jun 2021 19:14:44 -0700 (PDT) Received: from wangxiaodeMacBook-Air.local ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id k1sm701474pfa.30.2021.06.02.19.14.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 02 Jun 2021 19:14:44 -0700 (PDT) Subject: Re: [PATCH v1 2/8] virtio: Add boundary checks to virtio ring To: Andi Kleen , mst@redhat.com References: <20210603004133.4079390-1-ak@linux.intel.com> <20210603004133.4079390-3-ak@linux.intel.com> From: Jason Wang Message-ID: <4be00b3a-a15f-7fee-317b-ddabed3c1347@redhat.com> Date: Thu, 3 Jun 2021 10:14:38 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: <20210603004133.4079390-3-ak@linux.intel.com> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Cc: sathyanarayanan.kuppuswamy@linux.intel.com, x86@kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, iommu@lists.linux-foundation.org, jpoimboe@redhat.com, robin.murphy@arm.com, hch@lst.de, m.szyprowski@samsung.com 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="gbk"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" CtTaIDIwMjEvNi8zIMnPzuc4OjQxLCBBbmRpIEtsZWVuINC0tcA6Cj4gSW4gcHJvdGVjdGVkIGd1 ZXN0IG1vZGUgd2UgZG9uJ3QgdHJ1c3QgdGhlIGhvc3QuCj4KPiBUaGlzIG1lYW5zIHdlIG5lZWQg dG8gbWFrZSBzdXJlIHRoZSBob3N0IGNhbm5vdCBzdWJ2ZXJ0IHVzIHRocm91Z2gKPiB2aXJ0aW8g Y29tbXVuaWNhdGlvbi4gSW4gZ2VuZXJhbCBpdCBjYW4gY29ycnVwdCBvdXIgdmlydGlvIGRhdGEK PiBhbmQgY2F1c2UgYSBET1MsIGJ1dCBpdCBzaG91bGQgbm90IGJlIGFibGUgdG8gYWNjZXNzIGFu eSBkYXRhCj4gdGhhdCBpcyBub3QgZXhwbGljaXRlbHkgdW5kZXIgSU8uCj4KPiBBbHNvIGJvdW5k YXJ5IGNoZWNraW5nIHNvIHRoYXQgdGhlIGZyZWUgbGlzdCAod2hpY2ggaXMgYWNjZXNzaWJsZQo+ IHRvIHRoZSBob3N0KSBjYW5ub3QgcG9pbnQgb3V0c2lkZSB0aGUgdmlydGlvIHJpbmcuIE5vdGUg aXQgY291bGQKPiBzdGlsbCBjb250YWluIGxvb3BzIG9yIHNpbWlsYXIsIGJ1dCB0aGVzZSBzaG91 bGQgb25seSBjYXVzZSBhbiBET1MsCj4gbm90IGEgbWVtb3J5IGNvcnJ1cHRpb24gb3IgbGVhay4K Pgo+IFdoZW4gd2UgZGV0ZWN0IGFueSBvdXQgb2YgYm91bmRzIGRlc2NyaXB0b3IgdHJpZ2dlciBh biBJTyBlcnJvci4KPiBXZSBhbHNvIHVzZSBhIFdBUk4oKSAoaW4gY2FzZSBpdCB3YXMgYSBzb2Z0 d2FyZSBidWcgaW5zdGVhZCBvZgo+IGFuIGF0dGFjaykuIFRoaXMgaW1wbGllcyB0aGF0IGEgbWFs aWNpb3VzIGhvc3QgY2FuIGZsb29kCj4gdGhlIGd1ZXN0IGtlcm5lbCBsb2csIGJ1dCB0aGF0J3Mg b25seSBhIERPUyBhbmQgYWNjZXB0YWJsZQo+IGluIHRoZSB0aHJlYXQgbW9kZWwuCj4KPiBUaGlz IHBhdGNoIG9ubHkgaGFyZGVucyB0aGUgaW5pdGlhbCBjb25zdW1wdGlvbiBvZiB0aGUgZnJlZSBs aXN0LAo+IHRoZSBmcmVlaW5nIGNvbWVzIGxhdGVyLgo+Cj4gQW55IG9mIHRoZXNlIGVycm9ycyBj YW4gY2F1c2UgRE1BIG1lbW9yeSBsZWFrcywgYnV0IHRoZXJlIGlzIG5vdGhpbmcKPiB3ZSBjYW4g ZG8gYWJvdXQgdGhhdCBhbmQgdGhhdCB3b3VsZCBiZSBqdXN0IGEgRE9TLgo+Cj4gU2lnbmVkLW9m Zi1ieTogQW5kaSBLbGVlbiA8YWtAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy92 aXJ0aW8vdmlydGlvX3JpbmcuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0p Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aXJ0aW8vdmlydGlvX3JpbmcuYyBiL2RyaXZlcnMv dmlydGlvL3ZpcnRpb19yaW5nLmMKPiBpbmRleCBmMzU2MjlmYTQ3YjEuLmQzN2ZmNWEwZmY1OCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcmluZy5jCj4gKysrIGIvZHJpdmVy cy92aXJ0aW8vdmlydGlvX3JpbmcuYwo+IEBAIC00MTMsNiArNDEzLDE1IEBAIHN0YXRpYyBzdHJ1 Y3QgdnJpbmdfZGVzYyAqYWxsb2NfaW5kaXJlY3Rfc3BsaXQoc3RydWN0IHZpcnRxdWV1ZSAqX3Zx LAo+ICAgCXJldHVybiBkZXNjOwo+ICAgfQo+ICAgCj4gKy8qIGFzc3VtZXMgbm8gaW5kaXJlY3Qg bW9kZSAqLwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW5zaWRlX3NwbGl0X3Jpbmcoc3RydWN0IHZy aW5nX3ZpcnRxdWV1ZSAqdnEsCj4gKwkJCQkgICAgIHVuc2lnbmVkIGluZGV4KQo+ICt7Cj4gKwly ZXR1cm4gIVdBUk4oaW5kZXggPj0gdnEtPnNwbGl0LnZyaW5nLm51bSwKPiArCQkgICAgImRlc2Mg aW5kZXggJXUgb3V0IG9mIGJvdW5kcyAoJXUpXG4iLAo+ICsJCSAgICBpbmRleCwgdnEtPnNwbGl0 LnZyaW5nLm51bSk7CgoKSXQncyBiZXR0ZXIgdG8gdXNlIEJBRF9SSU5HIHRvIHN0b3AgdmlydHF1 ZXVlIGluIHRoaXMgY2FzZS4KCgo+ICt9Cj4gKwo+ICAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1 ZXVlX2FkZF9zcGxpdChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAJCQkJICAgICAgc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZ3NbXSwKPiAgIAkJCQkgICAgICB1bnNpZ25lZCBpbnQgdG90YWxfc2cs Cj4gQEAgLTQyOCw2ICs0MzcsNyBAQCBzdGF0aWMgaW5saW5lIGludCB2aXJ0cXVldWVfYWRkX3Nw bGl0KHN0cnVjdCB2aXJ0cXVldWUgKl92cSwKPiAgIAl1bnNpZ25lZCBpbnQgaSwgbiwgYXZhaWws IGRlc2NzX3VzZWQsIHByZXYsIGVycl9pZHg7Cj4gICAJaW50IGhlYWQ7Cj4gICAJYm9vbCBpbmRp cmVjdDsKPiArCWludCBpb19lcnI7Cj4gICAKPiAgIAlTVEFSVF9VU0UodnEpOwo+ICAgCj4gQEAg LTQ4MSw3ICs0OTEsMTMgQEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChz dHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAKPiAgIAlmb3IgKG4gPSAwOyBuIDwgb3V0X3Nnczsg bisrKSB7Cj4gICAJCWZvciAoc2cgPSBzZ3Nbbl07IHNnOyBzZyA9IHNnX25leHQoc2cpKSB7Cj4g LQkJCWRtYV9hZGRyX3QgYWRkciA9IHZyaW5nX21hcF9vbmVfc2codnEsIHNnLCBETUFfVE9fREVW SUNFKTsKPiArCQkJZG1hX2FkZHJfdCBhZGRyOwo+ICsKPiArCQkJaW9fZXJyID0gLUVJTzsKPiAr CQkJaWYgKCFpbnNpZGVfc3BsaXRfcmluZyh2cSwgaSkpCj4gKwkJCQlnb3RvIHVubWFwX3JlbGVh c2U7Cj4gKwkJCWlvX2VyciA9IC1FTk9NRU07Cj4gKwkJCWFkZHIgPSB2cmluZ19tYXBfb25lX3Nn KHZxLCBzZywgRE1BX1RPX0RFVklDRSk7Cj4gICAJCQlpZiAodnJpbmdfbWFwcGluZ19lcnJvcih2 cSwgYWRkcikpCj4gICAJCQkJZ290byB1bm1hcF9yZWxlYXNlOwo+ICAgCj4gQEAgLTQ5NCw3ICs1 MTAsMTMgQEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChzdHJ1Y3Qgdmly dHF1ZXVlICpfdnEsCj4gICAJfQo+ICAgCWZvciAoOyBuIDwgKG91dF9zZ3MgKyBpbl9zZ3MpOyBu KyspIHsKPiAgIAkJZm9yIChzZyA9IHNnc1tuXTsgc2c7IHNnID0gc2dfbmV4dChzZykpIHsKPiAt CQkJZG1hX2FkZHJfdCBhZGRyID0gdnJpbmdfbWFwX29uZV9zZyh2cSwgc2csIERNQV9GUk9NX0RF VklDRSk7Cj4gKwkJCWRtYV9hZGRyX3QgYWRkcjsKPiArCj4gKwkJCWlvX2VyciA9IC1FSU87Cj4g KwkJCWlmICghaW5zaWRlX3NwbGl0X3JpbmcodnEsIGkpKQo+ICsJCQkJZ290byB1bm1hcF9yZWxl YXNlOwo+ICsJCQlpb19lcnIgPSAtRU5PTUVNOwo+ICsJCQlhZGRyID0gdnJpbmdfbWFwX29uZV9z Zyh2cSwgc2csIERNQV9GUk9NX0RFVklDRSk7Cj4gICAJCQlpZiAodnJpbmdfbWFwcGluZ19lcnJv cih2cSwgYWRkcikpCj4gICAJCQkJZ290byB1bm1hcF9yZWxlYXNlOwoKCkl0IGxvb2tzIHRvIG1l IGFsbCB0aGUgZXZpbHMgY2FtZSBmcm9tIHRoZSBmYWN0IHRoYXQgd2UgZGVwZW5kcyBvbiB0aGUg CmRlc2NyaXB0b3IgcmluZy4KClNvIHRoZSBjaGVja3MgaW4gdGhpcyBwYXRjaCBjb3VsZCBpcyB1 bm5lY2Vzc2FyeSBpZiB3ZSBkb24ndCBldmVuIHJlYWQgCmZyb20gdGhlIGRlc2NyaXB0b3Igcmlu ZyB3aGljaCBjb3VsZCBiZSBtYW5pcHVsYXRlZCBieSB0aGUgZGV2aWNlLgoKVGhpcyBpcyB3aGF0 IG15IHNlcmllcyB0cmllcyB0byBhY2hpZXZlOgoKaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlz dHMva3ZtL21zZzI0MTgyNS5odG1sCgpUaGFua3MKCgoKPiAgIAo+IEBAIC01MTMsNiArNTM1LDcg QEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChzdHJ1Y3QgdmlydHF1ZXVl ICpfdnEsCj4gICAJCWRtYV9hZGRyX3QgYWRkciA9IHZyaW5nX21hcF9zaW5nbGUoCj4gICAJCQl2 cSwgZGVzYywgdG90YWxfc2cgKiBzaXplb2Yoc3RydWN0IHZyaW5nX2Rlc2MpLAo+ICAgCQkJRE1B X1RPX0RFVklDRSk7Cj4gKwkJaW9fZXJyID0gLUVOT01FTTsKPiAgIAkJaWYgKHZyaW5nX21hcHBp bmdfZXJyb3IodnEsIGFkZHIpKQo+ICAgCQkJZ290byB1bm1hcF9yZWxlYXNlOwo+ICAgCj4gQEAg LTUyOCw2ICs1NTEsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgdmlydHF1ZXVlX2FkZF9zcGxpdChz dHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAJLyogV2UncmUgdXNpbmcgc29tZSBidWZmZXJzIGZy b20gdGhlIGZyZWUgbGlzdC4gKi8KPiAgIAl2cS0+dnEubnVtX2ZyZWUgLT0gZGVzY3NfdXNlZDsK PiAgIAo+ICsJaW9fZXJyID0gLUVJTzsKPiArCWlmICghaW5zaWRlX3NwbGl0X3JpbmcodnEsIGhl YWQpKQo+ICsJCWdvdG8gdW5tYXBfcmVsZWFzZTsKPiArCj4gICAJLyogVXBkYXRlIGZyZWUgcG9p bnRlciAqLwo+ICAgCWlmIChpbmRpcmVjdCkKPiAgIAkJdnEtPmZyZWVfaGVhZCA9IHZpcnRpbzE2 X3RvX2NwdShfdnEtPnZkZXYsCj4gQEAgLTU0NSw2ICs1NzIsMTAgQEAgc3RhdGljIGlubGluZSBp bnQgdmlydHF1ZXVlX2FkZF9zcGxpdChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4gICAJLyogUHV0 IGVudHJ5IGluIGF2YWlsYWJsZSBhcnJheSAoYnV0IGRvbid0IHVwZGF0ZSBhdmFpbC0+aWR4IHVu dGlsIHRoZXkKPiAgIAkgKiBkbyBzeW5jKS4gKi8KPiAgIAlhdmFpbCA9IHZxLT5zcGxpdC5hdmFp bF9pZHhfc2hhZG93ICYgKHZxLT5zcGxpdC52cmluZy5udW0gLSAxKTsKPiArCj4gKwlpZiAoYXZh aWwgPj0gdnEtPnNwbGl0LnZyaW5nLm51bSkKPiArCQlnb3RvIHVubWFwX3JlbGVhc2U7Cj4gKwo+ ICAgCXZxLT5zcGxpdC52cmluZy5hdmFpbC0+cmluZ1thdmFpbF0gPSBjcHVfdG9fdmlydGlvMTYo X3ZxLT52ZGV2LCBoZWFkKTsKPiAgIAo+ICAgCS8qIERlc2NyaXB0b3JzIGFuZCBhdmFpbGFibGUg YXJyYXkgbmVlZCB0byBiZSBzZXQgYmVmb3JlIHdlIGV4cG9zZSB0aGUKPiBAQCAtNTc2LDYgKzYw Nyw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHZpcnRxdWV1ZV9hZGRfc3BsaXQoc3RydWN0IHZpcnRx dWV1ZSAqX3ZxLAo+ICAgCWZvciAobiA9IDA7IG4gPCB0b3RhbF9zZzsgbisrKSB7Cj4gICAJCWlm IChpID09IGVycl9pZHgpCj4gICAJCQlicmVhazsKPiArCQlpZiAoIWluc2lkZV9zcGxpdF9yaW5n KHZxLCBpKSkKPiArCQkJYnJlYWs7Cj4gICAJCXZyaW5nX3VubWFwX29uZV9zcGxpdCh2cSwgJmRl c2NbaV0pOwo+ICAgCQlpID0gdmlydGlvMTZfdG9fY3B1KF92cS0+dmRldiwgZGVzY1tpXS5uZXh0 KTsKPiAgIAl9Cj4gQEAgLTU4NCw3ICs2MTcsNyBAQCBzdGF0aWMgaW5saW5lIGludCB2aXJ0cXVl dWVfYWRkX3NwbGl0KHN0cnVjdCB2aXJ0cXVldWUgKl92cSwKPiAgIAkJa2ZyZWUoZGVzYyk7Cj4g ICAKPiAgIAlFTkRfVVNFKHZxKTsKPiAtCXJldHVybiAtRU5PTUVNOwo+ICsJcmV0dXJuIGlvX2Vy cjsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGJvb2wgdmlydHF1ZXVlX2tpY2tfcHJlcGFyZV9zcGxp dChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEpCj4gQEAgLTExNDYsNyArMTE3OSwxMiBAQCBzdGF0aWMg aW5saW5lIGludCB2aXJ0cXVldWVfYWRkX3BhY2tlZChzdHJ1Y3QgdmlydHF1ZXVlICpfdnEsCj4g ICAJYyA9IDA7Cj4gICAJZm9yIChuID0gMDsgbiA8IG91dF9zZ3MgKyBpbl9zZ3M7IG4rKykgewo+ ICAgCQlmb3IgKHNnID0gc2dzW25dOyBzZzsgc2cgPSBzZ19uZXh0KHNnKSkgewo+IC0JCQlkbWFf YWRkcl90IGFkZHIgPSB2cmluZ19tYXBfb25lX3NnKHZxLCBzZywgbiA8IG91dF9zZ3MgPwo+ICsJ CQlkbWFfYWRkcl90IGFkZHI7Cj4gKwo+ICsJCQlpZiAoY3VyciA+PSB2cS0+cGFja2VkLnZyaW5n Lm51bSkKPiArCQkJCWdvdG8gdW5tYXBfcmVsZWFzZTsKPiArCj4gKwkJCWFkZHIgPSB2cmluZ19t YXBfb25lX3NnKHZxLCBzZywgbiA8IG91dF9zZ3MgPwo+ICAgCQkJCQlETUFfVE9fREVWSUNFIDog RE1BX0ZST01fREVWSUNFKTsKPiAgIAkJCWlmICh2cmluZ19tYXBwaW5nX2Vycm9yKHZxLCBhZGRy KSkKPiAgIAkJCQlnb3RvIHVubWFwX3JlbGVhc2U7CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBtYWlsaW5nIGxpc3QKVmlydHVh bGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9saXN0cy5saW51eGZv dW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6YXRpb24=