Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp479855rwe; Fri, 26 Aug 2022 08:26:52 -0700 (PDT) X-Google-Smtp-Source: AA6agR5LDhvPlTS8M0e461YUc1c1B+c0L4b3tvxSulm5SW2raCjemvt0H2RBtbseeOz4zCs/o+0H X-Received: by 2002:a17:907:6e8b:b0:73d:c094:e218 with SMTP id sh11-20020a1709076e8b00b0073dc094e218mr5924150ejc.226.1661527612640; Fri, 26 Aug 2022 08:26:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661527612; cv=none; d=google.com; s=arc-20160816; b=Qm7xhKwZBtYOsT6D7fwuI9oEhZeT5s9LOoPqygYa0irKH2ZE3S33waKJIhe7VEjAzU u/KPCJjRVh4g5zULN4HxFWGu/gy/vhqUsRoilz7Kz+FA+N9svHl9veupShdxTgOPg5xd X25vpTbIQoGl9v2dZSPImYd+Y9ty4ErEeeHX0OUX9k0bmqvkhIMXalZhBfwPOktek4Q6 vfWupOAy1QwscAkRR8iTcSlPP/uiXtavQy8aiBFJX9kANoGP7cQn9khly4eyfSDX509H 8AZqX5DmYXgxNBVuB0lwmhrhdfPBrw1sUIc29nbPrl0tXlEobDpELDGlmf5EJHvJo9xr GDDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=XOIO6yMrJJaBLCVdiKJxecGrRstBRdkXKAU8JD1YObM=; b=a5q+/1DnLrTlBKBCAweYkz0j87HwsoQFpTr0NNOMbKTT+eyTC98ottErA1/OZ6wfG7 c8YJuopMpEe+pUxZmXYUcMSg0WmK+jgt4rlA4mwUpVZFqk3jnLkgQ6lPaeU362WCS7+3 IUP7T7HQIi4XVOvNnOtlyvgEZVFAf20pYCyvfttOJcjv8kroVA2tJwlIVia7eJ5JECFo yxVaXLd/0XNr1mUpur8CFhUm9ybk/dId5gu1rJj2chIOoWUcukYmCl89rr24oj0cBtQ1 eI+zsvfFrY8QHuo5E9dQkHOizT9kdHqzazGvoj2QwDcXqWcz90BMBqfqAcD7Ojs2hsvi IT3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=RBRSbeDr; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l24-20020a1709060e1800b007390c5ee0dfsi1175544eji.68.2022.08.26.08.26.26; Fri, 26 Aug 2022 08:26:52 -0700 (PDT) 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=@google.com header.s=20210112 header.b=RBRSbeDr; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344065AbiHZPM5 (ORCPT + 99 others); Fri, 26 Aug 2022 11:12:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245742AbiHZPMA (ORCPT ); Fri, 26 Aug 2022 11:12:00 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C7AFDEB60 for ; Fri, 26 Aug 2022 08:09:17 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-33dbe61eed8so29866577b3.1 for ; Fri, 26 Aug 2022 08:09:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc; bh=XOIO6yMrJJaBLCVdiKJxecGrRstBRdkXKAU8JD1YObM=; b=RBRSbeDrL8qGQexUijKhcV3H7NuqN9uz8ZM5rQWAltRN3zhZJP9TKmmIf+p+yKdl6T 3Am09npoAEtHEWxF/Bl4GBV+lvaWA+zyaViXoAoS6FK+zkjAU0V2E1ILS8x3lB5fXtKj 9IHWzkzR0lKD9H/hxXtLbHPszHgU+gNR/ouI3pNZH7yhF0/W+C1cpcyiViY1J1iEBFY8 /rQ0ukMFzwE2rHptS3PuB+v+/gBN3s2bGa1zvZC9PEceq+oso9Jptib23PUbkHkaJtUF ybmLJcK3rBbne7ulW3JpsBkspXiEuaq15wUwrHaqYN3CJnLRo71eoIyBsvku5gZs6p/s mp3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc; bh=XOIO6yMrJJaBLCVdiKJxecGrRstBRdkXKAU8JD1YObM=; b=aiRscnRT/ZpEWJD2Y/5DsOImPdDH9iMWW2945UxmhWo5DzTMwaQ+2OWN4NjcLk4aba HtyX7/7dCj4xyjRMvlDSIWM414HkJIevprZ2t7RrFC/wreLYba+xn0VE9hSWJSQqNCFL VpByZZNTXzMabO2e1/ovR+pob6AvE2W3ArLhgoxtXeDiByqvSgvPtWcnddbyZHfCe527 1mtY9tFGZpYqskSz/20EiniRuppWgF1j0tPU2JLNHLgzdy8AqtOyXRI+n5FKWxWD01ku dIs3wo6QsaVOWAxpc5gH0ur1ePzOlWNAbMsXqHRLaIl+/d1N13g+cDo/TaKC16nAHi4U j8+g== X-Gm-Message-State: ACgBeo2WC97jRx69cBq2YSj646Bs668cU2c3gMgkF7NEKB+6vaMFep54 S0vSHCX02D65YlJ+/bFAmYVqDs3lC6s= X-Received: from glider.muc.corp.google.com ([2a00:79e0:9c:201:5207:ac36:fdd3:502d]) (user=glider job=sendgmr) by 2002:a0d:e6cc:0:b0:338:c82b:9520 with SMTP id p195-20020a0de6cc000000b00338c82b9520mr151356ywe.66.1661526556996; Fri, 26 Aug 2022 08:09:16 -0700 (PDT) Date: Fri, 26 Aug 2022 17:07:46 +0200 In-Reply-To: <20220826150807.723137-1-glider@google.com> Mime-Version: 1.0 References: <20220826150807.723137-1-glider@google.com> X-Mailer: git-send-email 2.37.2.672.g94769d06f0-goog Message-ID: <20220826150807.723137-24-glider@google.com> Subject: [PATCH v5 23/44] virtio: kmsan: check/unpoison scatterlist in vring_map_one_sg() From: Alexander Potapenko To: glider@google.com Cc: Alexander Viro , Alexei Starovoitov , Andrew Morton , Andrey Konovalov , Andy Lutomirski , Arnd Bergmann , Borislav Petkov , Christoph Hellwig , Christoph Lameter , David Rientjes , Dmitry Vyukov , Eric Dumazet , Greg Kroah-Hartman , Herbert Xu , Ilya Leoshkevich , Ingo Molnar , Jens Axboe , Joonsoo Kim , Kees Cook , Marco Elver , Mark Rutland , Matthew Wilcox , "Michael S. Tsirkin" , Pekka Enberg , Peter Zijlstra , Petr Mladek , Steven Rostedt , Thomas Gleixner , Vasily Gorbik , Vegard Nossum , Vlastimil Babka , kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL 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 If vring doesn't use the DMA API, KMSAN is unable to tell whether the memory is initialized by hardware. Explicitly call kmsan_handle_dma() from vring_map_one_sg() in this case to prevent false positives. Signed-off-by: Alexander Potapenko Acked-by: Michael S. Tsirkin --- v4: -- swap virtio: and kmsan: in the subject Link: https://linux-review.googlesource.com/id/I211533ecb86a66624e151551f83ddd749536b3af --- drivers/virtio/virtio_ring.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 4620e9d79dde8..a9f06ec5b3c27 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -352,8 +353,15 @@ static dma_addr_t vring_map_one_sg(const struct vring_virtqueue *vq, struct scatterlist *sg, enum dma_data_direction direction) { - if (!vq->use_dma_api) + if (!vq->use_dma_api) { + /* + * If DMA is not used, KMSAN doesn't know that the scatterlist + * is initialized by the hardware. Explicitly check/unpoison it + * depending on the direction. + */ + kmsan_handle_dma(sg_page(sg), sg->offset, sg->length, direction); return (dma_addr_t)sg_phys(sg); + } /* * We can't use dma_map_sg, because we don't use scatterlists in -- 2.37.2.672.g94769d06f0-goog