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=-16.3 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,SPF_HELO_NONE,SPF_PASS 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 AEB09C433E0 for ; Tue, 9 Feb 2021 09:07:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6E06A64E6C for ; Tue, 9 Feb 2021 09:07:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230384AbhBIJDf (ORCPT ); Tue, 9 Feb 2021 04:03:35 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:41123 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230176AbhBIJAS (ORCPT ); Tue, 9 Feb 2021 04:00:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612861131; 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=KhbSJj/u7/Klvaf0H1NUS1T/THomFeB/0I+b8lFOAhk=; b=GLROGT2nyv/pBH0NuJ+2XaxWJ0SBjjmXnnCpt5MmbbxftM7ACarlvgDNDkWBdaXCRn+Uvb fWw7/97Fudq3z7qAbStJTKKowNwrtaNH2yGEXZzpvEjGis72uAGXnCQjPW4C9PJvsR+J+5 adcp86hEzZUVtJRRW65/Vw57YsU4JNc= Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-307-Gqub-l8MPVicwhB55id2jA-1; Tue, 09 Feb 2021 03:58:50 -0500 X-MC-Unique: Gqub-l8MPVicwhB55id2jA-1 Received: by mail-ed1-f72.google.com with SMTP id f21so14177835edx.10 for ; Tue, 09 Feb 2021 00:58:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=KhbSJj/u7/Klvaf0H1NUS1T/THomFeB/0I+b8lFOAhk=; b=Z03DljT6b0Ql/h2UVESPcq6N+zPhLd4wrK5BGJuG/5pYMK1v7+MtJYDY4bfjxi3Q7L 1/Dxh5Ey4cH+6yBvf0KWa3Wf1wgfsNmBgsjZTv1Uh86IrfEsjdMvXamGHsKl7j3NaSVD alwwQHd9FrFpMf6sHvcmMBK7NXIawJMw4n0M547Wv0uAqriCLDRtvJWlv3BKL1vBYjTV eZ/DxKY4OhTaPCWoTD0+go+DHl+fkHCZa8WBj0Iz4UQedLL6l3p6IwKWXOsqp/JevrmI ec563f4gV3XmmY1gGcIYcxUcGrdv1wGhAYl92Kh1XaqeWkkCtinc4+cxZqG7mU27r7IZ Z75g== X-Gm-Message-State: AOAM533FFC9pMXNbfkNangx9LT04frRCDTDKM5uvCAz72mYI+8/z2Pfl XO8U0G9LeaQkUgXdgJ65XgsRa9/31eqVCEPNcK1R61pA0FKocTtPWMQI2fcJeEXsJbxUm9gIp/p gpUYfxETXi9w1OwdVsqqsRn3T X-Received: by 2002:a50:ec06:: with SMTP id g6mr21664789edr.12.1612861128702; Tue, 09 Feb 2021 00:58:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJymcI9SAwF3UFCLc61KiBRA73aQgsEZsgY8MckX3xcIQCybfwa4DFmWwXMZJgFEzdRLQKkl3g== X-Received: by 2002:a50:ec06:: with SMTP id g6mr21664777edr.12.1612861128479; Tue, 09 Feb 2021 00:58:48 -0800 (PST) Received: from steredhat (host-79-34-249-199.business.telecomitalia.it. [79.34.249.199]) by smtp.gmail.com with ESMTPSA id du6sm9918346ejc.78.2021.02.09.00.58.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Feb 2021 00:58:47 -0800 (PST) Date: Tue, 9 Feb 2021 09:58:45 +0100 From: Stefano Garzarella To: Jason Wang Cc: "Michael S. Tsirkin" , virtualization@lists.linux-foundation.org, Parav Pandit , Eli Cohen , linux-kernel@vger.kernel.org Subject: Re: [PATCH] vdpa/mlx5: fix param validation in mlx5_vdpa_get_config() Message-ID: <20210209085845.5zwtxacfgnbmnlot@steredhat> References: <20210208161741.104939-1-sgarzare@redhat.com> <20210208133312-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 09, 2021 at 11:24:03AM +0800, Jason Wang wrote: > >On 2021/2/9 上午2:38, Michael S. Tsirkin wrote: >>On Mon, Feb 08, 2021 at 05:17:41PM +0100, Stefano Garzarella wrote: >>>It's legal to have 'offset + len' equal to >>>sizeof(struct virtio_net_config), since 'ndev->config' is a >>>'struct virtio_net_config', so we can safely copy its content under >>>this condition. >>> >>>Fixes: 1a86b377aa21 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices") >>>Cc: stable@vger.kernel.org >>>Signed-off-by: Stefano Garzarella >>>--- >>> drivers/vdpa/mlx5/net/mlx5_vnet.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>>diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c >>>index dc88559a8d49..10e9b09932eb 100644 >>>--- a/drivers/vdpa/mlx5/net/mlx5_vnet.c >>>+++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c >>>@@ -1820,7 +1820,7 @@ static void mlx5_vdpa_get_config(struct vdpa_device *vdev, unsigned int offset, >>> struct mlx5_vdpa_dev *mvdev = to_mvdev(vdev); >>> struct mlx5_vdpa_net *ndev = to_mlx5_vdpa_ndev(mvdev); >>>- if (offset + len < sizeof(struct virtio_net_config)) >>>+ if (offset + len <= sizeof(struct virtio_net_config)) >>> memcpy(buf, (u8 *)&ndev->config + offset, len); >>> } >>Actually first I am not sure we need these checks at all. >>vhost_vdpa_config_validate already validates the values, right? > > >I think they're working at different levels. There's no guarantee that >vhost-vdpa is the driver for this vdpa device. > Maybe we can do these checks in the vdpa_get_config() helper and we can also add a vdpa_set_config() to do the same. Thanks, Stefano > >> >>Second, what will happen when we extend the struct and then >>run new userspace on an old kernel? Looks like it will just >>fail right? So what is the plan? > > >In this case, get_config() should match the spec behaviour. That is to >say the size of config space depends on the feature negotiated. > >Thanks > > >> I think we should >>allow a bigger size, and return the copied config size to userspace. >> >> >>>-- >>>2.29.2 > 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=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 BA822C433E0 for ; Tue, 9 Feb 2021 09:28:27 +0000 (UTC) Received: from whitealder.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 mail.kernel.org (Postfix) with ESMTPS id 5B2B364EBE for ; Tue, 9 Feb 2021 09:28:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5B2B364EBE 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 whitealder.osuosl.org (Postfix) with ESMTP id 28961873C6; Tue, 9 Feb 2021 09:28:27 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BwGZG34HEx6J; Tue, 9 Feb 2021 09:28:26 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by whitealder.osuosl.org (Postfix) with ESMTP id 79E9E86B05; Tue, 9 Feb 2021 09:28:26 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 58DF5C0891; Tue, 9 Feb 2021 09:28:26 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 26D8FC013A for ; Tue, 9 Feb 2021 09:28:24 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 1D9FE870BD for ; Tue, 9 Feb 2021 09:28:24 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mchj-36BSM+D for ; Tue, 9 Feb 2021 09:28:23 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by hemlock.osuosl.org (Postfix) with ESMTP id 37496870C7 for ; Tue, 9 Feb 2021 09:23:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612861131; 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=KhbSJj/u7/Klvaf0H1NUS1T/THomFeB/0I+b8lFOAhk=; b=GLROGT2nyv/pBH0NuJ+2XaxWJ0SBjjmXnnCpt5MmbbxftM7ACarlvgDNDkWBdaXCRn+Uvb fWw7/97Fudq3z7qAbStJTKKowNwrtaNH2yGEXZzpvEjGis72uAGXnCQjPW4C9PJvsR+J+5 adcp86hEzZUVtJRRW65/Vw57YsU4JNc= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612861732; 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=KhbSJj/u7/Klvaf0H1NUS1T/THomFeB/0I+b8lFOAhk=; b=dFVdibbZ/Idj5uzpdVA7vSK1em1YjCx4epoorvtOwoVNcufkpzwylwSv8ygWB3dD2XsV/j TgHKt0bM3XFJbrpFswIJ9RmmQ+6P3fYFcMyW9zHEchLsvjfSu7aLQfFCuaMexaeZuDZ9CZ LZgyQbA8RgdCHLgcVON/T+tLv55Aq/g= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1612862334; 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=KhbSJj/u7/Klvaf0H1NUS1T/THomFeB/0I+b8lFOAhk=; b=fk+jFlnWWVjrgkBxT7gsFfQ+dX4RSYQMBRYu8HmHlrIWAm+i3C5daQelp/yuE8sxm8CpaE HzbixbcsePNwM5F7MkAw4/g6TYK/Ft68x7QJ8iroIUf+mmXoFohtCVD62OiSDoVkQbF7vw 6SxK0opb4QybzjT0wfehwmmWdgTCKaE= Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-258-vpypIdWCMtuwKZD8vvhuQQ-1; Tue, 09 Feb 2021 03:58:49 -0500 X-MC-Unique: vpypIdWCMtuwKZD8vvhuQQ-1 Received: by mail-ed1-f71.google.com with SMTP id o21so4860841edq.1 for ; Tue, 09 Feb 2021 00:58:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=KhbSJj/u7/Klvaf0H1NUS1T/THomFeB/0I+b8lFOAhk=; b=OaKQSWhhI8iEvzvD4F2WqK1O1d1zXEws5ZO4H5OwgJqV9RxmFouY1VwQtVtN8A7H7N zUCp5sfpAcMBcmM3Fqytfu07E4sQj/rYuapUqXzu6Lq0PxKvRTmN0HlleKHTqeSW+Vsu feVUqnyJOwq3oOQQHMMU+fwty9o1l6AqdsO8nZ5w9OOTcozwdxhJ3t6u+rKqYAwmY+n0 5JVFiykua0GDWERXy5ekvsOZQEoFhfYQB1YytUN1jYtwv+a3K6khHIkjpR5xPOY69X0o 0DUPy31Nu92NADp6+a26Ci24MHt5kubzKIkvdvQN+miQ9oHmLOPDli1iPUUSDbWfwR9I cYJg== X-Gm-Message-State: AOAM533ASowDLiDoA4vZZC0MNqMdJO9gtFvZ5wbPmPZishe9NvMd97f7 GG45ARutI0v3ElxODL+TGXcSO91hrq5qjG6Eh04YYy1LUd7C6iQJQcQSZBP89pdpGMHCDzHbEaY mSCT9AQ8ML2sx8K8dJNEiuSnnk4NnWIK2R/wkohwuSw== X-Received: by 2002:a50:ec06:: with SMTP id g6mr21664790edr.12.1612861128702; Tue, 09 Feb 2021 00:58:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJymcI9SAwF3UFCLc61KiBRA73aQgsEZsgY8MckX3xcIQCybfwa4DFmWwXMZJgFEzdRLQKkl3g== X-Received: by 2002:a50:ec06:: with SMTP id g6mr21664777edr.12.1612861128479; Tue, 09 Feb 2021 00:58:48 -0800 (PST) Received: from steredhat (host-79-34-249-199.business.telecomitalia.it. [79.34.249.199]) by smtp.gmail.com with ESMTPSA id du6sm9918346ejc.78.2021.02.09.00.58.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Feb 2021 00:58:47 -0800 (PST) Date: Tue, 9 Feb 2021 09:58:45 +0100 From: Stefano Garzarella To: Jason Wang Subject: Re: [PATCH] vdpa/mlx5: fix param validation in mlx5_vdpa_get_config() Message-ID: <20210209085845.5zwtxacfgnbmnlot@steredhat> References: <20210208161741.104939-1-sgarzare@redhat.com> <20210208133312-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=sgarzare@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: Eli Cohen , virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, "Michael S. Tsirkin" 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="utf-8"; Format="flowed" Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gVHVlLCBGZWIgMDksIDIwMjEgYXQgMTE6MjQ6MDNBTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPgo+T24gMjAyMS8yLzkg5LiK5Y2IMjozOCwgTWljaGFlbCBTLiBUc2lya2luIHdyb3RlOgo+ Pk9uIE1vbiwgRmViIDA4LCAyMDIxIGF0IDA1OjE3OjQxUE0gKzAxMDAsIFN0ZWZhbm8gR2FyemFy ZWxsYSB3cm90ZToKPj4+SXQncyBsZWdhbCB0byBoYXZlICdvZmZzZXQgKyBsZW4nIGVxdWFsIHRv Cj4+PnNpemVvZihzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcpLCBzaW5jZSAnbmRldi0+Y29uZmln JyBpcyBhCj4+PidzdHJ1Y3QgdmlydGlvX25ldF9jb25maWcnLCBzbyB3ZSBjYW4gc2FmZWx5IGNv cHkgaXRzIGNvbnRlbnQgdW5kZXIKPj4+dGhpcyBjb25kaXRpb24uCj4+Pgo+Pj5GaXhlczogMWE4 NmIzNzdhYTIxICgidmRwYS9tbHg1OiBBZGQgVkRQQSBkcml2ZXIgZm9yIHN1cHBvcnRlZCBtbHg1 IGRldmljZXMiKQo+Pj5DYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwo+Pj5TaWduZWQtb2ZmLWJ5 OiBTdGVmYW5vIEdhcnphcmVsbGEgPHNnYXJ6YXJlQHJlZGhhdC5jb20+Cj4+Pi0tLQo+Pj4gIGRy aXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYyB8IDIgKy0KPj4+ICAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKPj4+Cj4+PmRpZmYgLS1naXQgYS9kcml2 ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4NV92bmV0LmMgYi9kcml2ZXJzL3ZkcGEvbWx4NS9uZXQvbWx4 NV92bmV0LmMKPj4+aW5kZXggZGM4ODU1OWE4ZDQ5Li4xMGU5YjA5OTMyZWIgMTAwNjQ0Cj4+Pi0t LSBhL2RyaXZlcnMvdmRwYS9tbHg1L25ldC9tbHg1X3ZuZXQuYwo+Pj4rKysgYi9kcml2ZXJzL3Zk cGEvbWx4NS9uZXQvbWx4NV92bmV0LmMKPj4+QEAgLTE4MjAsNyArMTgyMCw3IEBAIHN0YXRpYyB2 b2lkIG1seDVfdmRwYV9nZXRfY29uZmlnKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRldiwgdW5zaWdu ZWQgaW50IG9mZnNldCwKPj4+ICAJc3RydWN0IG1seDVfdmRwYV9kZXYgKm12ZGV2ID0gdG9fbXZk ZXYodmRldik7Cj4+PiAgCXN0cnVjdCBtbHg1X3ZkcGFfbmV0ICpuZGV2ID0gdG9fbWx4NV92ZHBh X25kZXYobXZkZXYpOwo+Pj4tCWlmIChvZmZzZXQgKyBsZW4gPCBzaXplb2Yoc3RydWN0IHZpcnRp b19uZXRfY29uZmlnKSkKPj4+KwlpZiAob2Zmc2V0ICsgbGVuIDw9IHNpemVvZihzdHJ1Y3Qgdmly dGlvX25ldF9jb25maWcpKQo+Pj4gIAkJbWVtY3B5KGJ1ZiwgKHU4ICopJm5kZXYtPmNvbmZpZyAr IG9mZnNldCwgbGVuKTsKPj4+ICB9Cj4+QWN0dWFsbHkgZmlyc3QgSSBhbSBub3Qgc3VyZSB3ZSBu ZWVkIHRoZXNlIGNoZWNrcyBhdCBhbGwuCj4+dmhvc3RfdmRwYV9jb25maWdfdmFsaWRhdGUgYWxy ZWFkeSB2YWxpZGF0ZXMgdGhlIHZhbHVlcywgcmlnaHQ/Cj4KPgo+SSB0aGluayB0aGV5J3JlIHdv cmtpbmcgYXQgZGlmZmVyZW50IGxldmVscy4gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCAKPnZo b3N0LXZkcGEgaXMgdGhlIGRyaXZlciBmb3IgdGhpcyB2ZHBhIGRldmljZS4KPgoKTWF5YmUgd2Ug Y2FuIGRvIHRoZXNlIGNoZWNrcyBpbiB0aGUgdmRwYV9nZXRfY29uZmlnKCkgaGVscGVyIGFuZCB3 ZSBjYW4gCmFsc28gYWRkIGEgdmRwYV9zZXRfY29uZmlnKCkgdG8gZG8gdGhlIHNhbWUuCgpUaGFu a3MsClN0ZWZhbm8KCj4KPj4KPj5TZWNvbmQsIHdoYXQgd2lsbCBoYXBwZW4gd2hlbiB3ZSBleHRl bmQgdGhlIHN0cnVjdCBhbmQgdGhlbgo+PnJ1biBuZXcgdXNlcnNwYWNlIG9uIGFuIG9sZCBrZXJu ZWw/IExvb2tzIGxpa2UgaXQgd2lsbCBqdXN0Cj4+ZmFpbCByaWdodD8gU28gd2hhdCBpcyB0aGUg cGxhbj8KPgo+Cj5JbiB0aGlzIGNhc2UsIGdldF9jb25maWcoKSBzaG91bGQgbWF0Y2ggdGhlIHNw ZWMgYmVoYXZpb3VyLiBUaGF0IGlzIHRvIAo+c2F5IHRoZSBzaXplIG9mIGNvbmZpZyBzcGFjZSBk ZXBlbmRzIG9uIHRoZSBmZWF0dXJlIG5lZ290aWF0ZWQuCj4KPlRoYW5rcwo+Cj4KPj4gIEkgdGhp bmsgd2Ugc2hvdWxkCj4+YWxsb3cgYSBiaWdnZXIgc2l6ZSwgYW5kIHJldHVybiB0aGUgY29waWVk IGNvbmZpZyBzaXplIHRvIHVzZXJzcGFjZS4KPj4KPj4KPj4+LS0gCj4+PjIuMjkuMgo+CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlv biBtYWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcK aHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVh bGl6YXRpb24=