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=-6.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 34CC2C41604 for ; Wed, 7 Oct 2020 18:01:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CC4282173E for ; Wed, 7 Oct 2020 18:01:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="XlsYCfTV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728395AbgJGSBy (ORCPT ); Wed, 7 Oct 2020 14:01:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728342AbgJGSBy (ORCPT ); Wed, 7 Oct 2020 14:01:54 -0400 Received: from mail-oo1-xc44.google.com (mail-oo1-xc44.google.com [IPv6:2607:f8b0:4864:20::c44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1B466C0613D4 for ; Wed, 7 Oct 2020 11:01:54 -0700 (PDT) Received: by mail-oo1-xc44.google.com with SMTP id c25so176896ooe.13 for ; Wed, 07 Oct 2020 11:01:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=KjKZykFuT09vi8gvWSxWfIoih5+HtjIRxuS5MgzFTGo=; b=XlsYCfTVgW+6nmGAiv0O62GLPsC5r7eB+oidAEHNavDRGpWicEbtNZg9to7A5saHMp zaYRD/gT5inYX9JmqOP5ZzySgAIOp0+59TPao6y2kIbw9G7KU0mdvCuhCQrafShecj0J tHZf4mGHu3aegW49dmX0ZJptYBRUrRuO4MkvA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=KjKZykFuT09vi8gvWSxWfIoih5+HtjIRxuS5MgzFTGo=; b=Yz8vX+2HU+EURljxPtsgmqwRyazT1icduNNyTnkOCuJkJcb6GPWpk0U4Ohs+HIaLZ1 i0KMDb/6lnMozCX7jYYcH8VqkxBlrSFV0KTWQrCZSkCMM1481FHchC2tipivp7mCG2jb eJsOhNCYQ9jNxyFyAYqIlvYIdrZJSLAh+V96Nf465B0LkPysV3YilgN6z6aSNo399tN3 s8fHcaqQeb9NrZNFYTt+KEtfQNvbfeSs3/h+B1Cj7pSTwsBFberWbwEhNDOR8kAtn9xB Wv7iGQ/jcUZwippxxrIAo13uq7oQwlz/mtNYZqeWSeiKk9yrfM9/Y9SoqXfutZFFrDAB OdUw== X-Gm-Message-State: AOAM533EHxS6NR3VY9jblPyT0+UA1tBGWGHqNr6lrRfrdV48kS40L7nS lQxy4kn0z0BNVmpGpbagFo8Iw1TZSr7e2HY/b45mpw== X-Google-Smtp-Source: ABdhPJwJzYY7PIFYfmYEAKc+uMwrEIxle3PFN75o5nMMKSdxenHBbi1fgd2mUNbWFOGRvdaIUhxGwTNij1DRYovGNtE= X-Received: by 2002:a4a:c011:: with SMTP id v17mr2806667oop.89.1602093713265; Wed, 07 Oct 2020 11:01:53 -0700 (PDT) MIME-Version: 1.0 References: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> <20201007164426.1812530-8-daniel.vetter@ffwll.ch> <20201007172746.GU5177@ziepe.ca> In-Reply-To: <20201007172746.GU5177@ziepe.ca> From: Daniel Vetter Date: Wed, 7 Oct 2020 20:01:42 +0200 Message-ID: Subject: Re: [PATCH 07/13] mm: close race in generic_access_phys To: Jason Gunthorpe Cc: DRI Development , LKML , kvm@vger.kernel.org, Linux MM , Linux ARM , linux-samsung-soc , "open list:DMA BUFFER SHARING FRAMEWORK" , linux-s390@vger.kernel.org, Dan Williams , Kees Cook , Rik van Riel , Benjamin Herrensmidt , Dave Airlie , Hugh Dickins , Andrew Morton , John Hubbard , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Jan Kara , Daniel Vetter Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Oct 7, 2020 at 7:27 PM Jason Gunthorpe wrote: > > On Wed, Oct 07, 2020 at 06:44:20PM +0200, Daniel Vetter wrote: > > Way back it was a reasonable assumptions that iomem mappings never > > change the pfn range they point at. But this has changed: > > > > - gpu drivers dynamically manage their memory nowadays, invalidating > > ptes with unmap_mapping_range when buffers get moved > > > > - contiguous dma allocations have moved from dedicated carvetouts to > > cma regions. This means if we miss the unmap the pfn might contain > > pagecache or anon memory (well anything allocated with GFP_MOVEABLE) > > > > - even /dev/mem now invalidates mappings when the kernel requests that > > iomem region when CONFIG_IO_STRICT_DEVMEM is set, see 3234ac664a87 > > ("/dev/mem: Revoke mappings when a driver claims the region") > > > > Accessing pfns obtained from ptes without holding all the locks is > > therefore no longer a good idea. Fix this. > > > > Since ioremap might need to manipulate pagetables too we need to drop > > the pt lock and have a retry loop if we raced. > > > > While at it, also add kerneldoc and improve the comment for the > > vma_ops->access function. It's for accessing, not for moving the > > memory from iomem to system memory, as the old comment seemed to > > suggest. > > > > References: 28b2ee20c7cb ("access_process_vm device memory infrastructu= re") > > Cc: Jason Gunthorpe > > Cc: Dan Williams > > Cc: Kees Cook > > Cc: Rik van Riel > > Cc: Benjamin Herrensmidt > > Cc: Dave Airlie > > Cc: Hugh Dickins > > Cc: Andrew Morton > > Cc: John Hubbard > > Cc: J=C3=A9r=C3=B4me Glisse > > Cc: Jan Kara > > Cc: Dan Williams > > Cc: linux-mm@kvack.org > > Cc: linux-arm-kernel@lists.infradead.org > > Cc: linux-samsung-soc@vger.kernel.org > > Cc: linux-media@vger.kernel.org > > Signed-off-by: Daniel Vetter > > --- > > include/linux/mm.h | 3 ++- > > mm/memory.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- > > 2 files changed, 44 insertions(+), 3 deletions(-) > > This does seem to solve the race with revoke_devmem(), but it is really u= gly. > > It would be much nicer to wrap a rwsem around this access and the unmap. > > Any place using it has a nice linear translation from vm_off to pfn, > so I don't think there is a such a good reason to use follow_pte in > the first place. > > ie why not the helper be this: > > int generic_access_phys(unsigned long pfn, unsigned long pgprot, > void *buf, size_t len, bool write) > > Then something like dev/mem would compute pfn and obtain the lock: > > dev_access(struct vm_area_struct *vma, unsigned long addr, void *buf, int= len, int write) > { > cpu_addr =3D vma->vm_pgoff*PAGE_SIZE + (addr - vma->vm_start)); > > /* FIXME: Has to be over each page of len */ > if (!devmem_is_allowed_access(PHYS_PFN(cpu_addr/4096))) > return -EPERM; > > down_read(&mem_sem); > generic_access_phys(cpu_addr/4096, pgprot_val(vma->vm_page_prot), > buf, len, write); > up_read(&mem_sem); > } > > The other cases looked simpler because they don't revoke, here the > mmap_sem alone should be enough protection, they would just need to > provide the linear translation to pfn. > > What do you think? I think it'd fix the bug, until someone wires ->access up for drivers/gpu, or the next subsystem. This is also just for ptrace, so we really don't care when we stall the vm badly and other silly things. So I figured the somewhat ugly, but full generic solution is the better one, so that people who want to be able to ptrace read/write their iomem mmaps can just sprinkle this wherever they feel like. But yeah if we go with most minimal fix, i.e. only trying to fix the current users, then your thing should work and is simpler. But it leaves the door open for future problems. -Daniel --=20 Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch 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=-7.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 C92DAC4363C for ; Wed, 7 Oct 2020 18:03:31 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 4945A2168B for ; Wed, 7 Oct 2020 18:03:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Iciurtu/"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="XlsYCfTV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4945A2168B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=htkdRnUaeiVLB9voER0r/rGPOgfSVXTSeMzIUW23104=; b=Iciurtu/o57ZA59pbbMPaQb7A 0B6UQMDtt+yraXLd3Di2/sF472LFil/NOaVw0HshXWbU9uPHos2j85HTiY6Uu7e2P9ah00mIum1OD wwAytCGwamPkg0+be4IjRdjOvAqAEmXGrBykPzkvtmtZfMyC8cXaf8SK085lWFf3d3oVNjtk+Mp7a Zr5Q5U/nBxnhWi60qYmGMtW+lP7aKNBaQce6iUURR3HRcmjTaInRgNbr62CtdiNrt061eFyL9waGr HPJlFoIa+2082wqumMdx3OZ+vyU2cjEOXxiL8sSmuPYWMpDx3SZYzxBrINqIRUeEFSpIhWKWMX6kW GZdVXkHIw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQDlH-00036t-9Z; Wed, 07 Oct 2020 18:01:59 +0000 Received: from mail-oo1-xc43.google.com ([2607:f8b0:4864:20::c43]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQDlD-00035H-4c for linux-arm-kernel@lists.infradead.org; Wed, 07 Oct 2020 18:01:56 +0000 Received: by mail-oo1-xc43.google.com with SMTP id w7so845094oow.7 for ; Wed, 07 Oct 2020 11:01:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=KjKZykFuT09vi8gvWSxWfIoih5+HtjIRxuS5MgzFTGo=; b=XlsYCfTVgW+6nmGAiv0O62GLPsC5r7eB+oidAEHNavDRGpWicEbtNZg9to7A5saHMp zaYRD/gT5inYX9JmqOP5ZzySgAIOp0+59TPao6y2kIbw9G7KU0mdvCuhCQrafShecj0J tHZf4mGHu3aegW49dmX0ZJptYBRUrRuO4MkvA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=KjKZykFuT09vi8gvWSxWfIoih5+HtjIRxuS5MgzFTGo=; b=H1j9iayfcyBEUAgleRDloPxU1r0zQ1aT41gSJ9ZH89+HfSqbI2XFCPv3JEwLpR0//U bdqAzB0QpIRzzce4WWLuT42AE+SRDOAjhx9CJiehOyMtntaIO8sIpoK23PtPtvXgOOW6 WwF+YH0XLOS4ViuMajUgIldDl4J/A4ynNlKAWznRXuSfl0EH6PAb/R48oEJrdyDfx+XK lJHwHim8VL3ncXwKH1oq2lQsXrgeKgeK9Zy6zkQSDo+52CNLSy0PoYINcNwHiR7w43D+ 5US+9VsORrwrluumCEfqHRPx85XY/e1xE0atG+zCTOZIVOR2EchmWA3gk+2euq8WCSQC uycw== X-Gm-Message-State: AOAM531C0IeGLFalueGZTTiC2+aGOS499O0chxoOABjjBZlRaltLq5pi s/Qa8rnFRC/J8di/46uyiqJupvQltg7F+9ggNdWX4A== X-Google-Smtp-Source: ABdhPJwJzYY7PIFYfmYEAKc+uMwrEIxle3PFN75o5nMMKSdxenHBbi1fgd2mUNbWFOGRvdaIUhxGwTNij1DRYovGNtE= X-Received: by 2002:a4a:c011:: with SMTP id v17mr2806667oop.89.1602093713265; Wed, 07 Oct 2020 11:01:53 -0700 (PDT) MIME-Version: 1.0 References: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> <20201007164426.1812530-8-daniel.vetter@ffwll.ch> <20201007172746.GU5177@ziepe.ca> In-Reply-To: <20201007172746.GU5177@ziepe.ca> From: Daniel Vetter Date: Wed, 7 Oct 2020 20:01:42 +0200 Message-ID: Subject: Re: [PATCH 07/13] mm: close race in generic_access_phys To: Jason Gunthorpe X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201007_140155_208969_711D08A8 X-CRM114-Status: GOOD ( 34.17 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-s390@vger.kernel.org, Rik van Riel , linux-samsung-soc , Jan Kara , Kees Cook , kvm@vger.kernel.org, Dave Airlie , Benjamin Herrensmidt , LKML , DRI Development , Linux MM , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Daniel Vetter , John Hubbard , Hugh Dickins , Dan Williams , Andrew Morton , Linux ARM , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCBPY3QgNywgMjAyMCBhdCA3OjI3IFBNIEphc29uIEd1bnRob3JwZSA8amdnQHppZXBl LmNhPiB3cm90ZToKPgo+IE9uIFdlZCwgT2N0IDA3LCAyMDIwIGF0IDA2OjQ0OjIwUE0gKzAyMDAs IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBXYXkgYmFjayBpdCB3YXMgYSByZWFzb25hYmxlIGFz c3VtcHRpb25zIHRoYXQgaW9tZW0gbWFwcGluZ3MgbmV2ZXIKPiA+IGNoYW5nZSB0aGUgcGZuIHJh bmdlIHRoZXkgcG9pbnQgYXQuIEJ1dCB0aGlzIGhhcyBjaGFuZ2VkOgo+ID4KPiA+IC0gZ3B1IGRy aXZlcnMgZHluYW1pY2FsbHkgbWFuYWdlIHRoZWlyIG1lbW9yeSBub3dhZGF5cywgaW52YWxpZGF0 aW5nCj4gPiAgIHB0ZXMgd2l0aCB1bm1hcF9tYXBwaW5nX3JhbmdlIHdoZW4gYnVmZmVycyBnZXQg bW92ZWQKPiA+Cj4gPiAtIGNvbnRpZ3VvdXMgZG1hIGFsbG9jYXRpb25zIGhhdmUgbW92ZWQgZnJv bSBkZWRpY2F0ZWQgY2FydmV0b3V0cyB0bwo+ID4gICBjbWEgcmVnaW9ucy4gVGhpcyBtZWFucyBp ZiB3ZSBtaXNzIHRoZSB1bm1hcCB0aGUgcGZuIG1pZ2h0IGNvbnRhaW4KPiA+ICAgcGFnZWNhY2hl IG9yIGFub24gbWVtb3J5ICh3ZWxsIGFueXRoaW5nIGFsbG9jYXRlZCB3aXRoIEdGUF9NT1ZFQUJM RSkKPiA+Cj4gPiAtIGV2ZW4gL2Rldi9tZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4g dGhlIGtlcm5lbCByZXF1ZXN0cyB0aGF0Cj4gPiAgIGlvbWVtIHJlZ2lvbiB3aGVuIENPTkZJR19J T19TVFJJQ1RfREVWTUVNIGlzIHNldCwgc2VlIDMyMzRhYzY2NGE4Nwo+ID4gICAoIi9kZXYvbWVt OiBSZXZva2UgbWFwcGluZ3Mgd2hlbiBhIGRyaXZlciBjbGFpbXMgdGhlIHJlZ2lvbiIpCj4gPgo+ ID4gQWNjZXNzaW5nIHBmbnMgb2J0YWluZWQgZnJvbSBwdGVzIHdpdGhvdXQgaG9sZGluZyBhbGwg dGhlIGxvY2tzIGlzCj4gPiB0aGVyZWZvcmUgbm8gbG9uZ2VyIGEgZ29vZCBpZGVhLiBGaXggdGhp cy4KPiA+Cj4gPiBTaW5jZSBpb3JlbWFwIG1pZ2h0IG5lZWQgdG8gbWFuaXB1bGF0ZSBwYWdldGFi bGVzIHRvbyB3ZSBuZWVkIHRvIGRyb3AKPiA+IHRoZSBwdCBsb2NrIGFuZCBoYXZlIGEgcmV0cnkg bG9vcCBpZiB3ZSByYWNlZC4KPiA+Cj4gPiBXaGlsZSBhdCBpdCwgYWxzbyBhZGQga2VybmVsZG9j IGFuZCBpbXByb3ZlIHRoZSBjb21tZW50IGZvciB0aGUKPiA+IHZtYV9vcHMtPmFjY2VzcyBmdW5j dGlvbi4gSXQncyBmb3IgYWNjZXNzaW5nLCBub3QgZm9yIG1vdmluZyB0aGUKPiA+IG1lbW9yeSBm cm9tIGlvbWVtIHRvIHN5c3RlbSBtZW1vcnksIGFzIHRoZSBvbGQgY29tbWVudCBzZWVtZWQgdG8K PiA+IHN1Z2dlc3QuCj4gPgo+ID4gUmVmZXJlbmNlczogMjhiMmVlMjBjN2NiICgiYWNjZXNzX3By b2Nlc3Nfdm0gZGV2aWNlIG1lbW9yeSBpbmZyYXN0cnVjdHVyZSIpCj4gPiBDYzogSmFzb24gR3Vu dGhvcnBlIDxqZ2dAemllcGUuY2E+Cj4gPiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFt c0BpbnRlbC5jb20+Cj4gPiBDYzogS2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+Cj4g PiBDYzogUmlrIHZhbiBSaWVsIDxyaWVsQHJlZGhhdC5jb20+Cj4gPiBDYzogQmVuamFtaW4gSGVy cmVuc21pZHQgPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZz4KPiA+IENjOiBEYXZlIEFpcmxpZSA8 YWlybGllZEBsaW51eC5pZT4KPiA+IENjOiBIdWdoIERpY2tpbnMgPGh1Z2hAdmVyaXRhcy5jb20+ Cj4gPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KPiA+IENj OiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52aWRpYS5jb20+Cj4gPiBDYzogSsOpcsO0bWUgR2xp c3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4gPiBDYzogSmFuIEthcmEgPGphY2tAc3VzZS5jej4K PiA+IENjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KPiA+IENjOiBs aW51eC1tbUBrdmFjay5vcmcKPiA+IENjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKPiA+IENjOiBsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKPiA+IENjOiBs aW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKPiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgaW5jbHVkZS9saW51eC9t bS5oIHwgIDMgKystCj4gPiAgbW0vbWVtb3J5LmMgICAgICAgIHwgNDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDQ0IGlu c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4KPiBUaGlzIGRvZXMgc2VlbSB0byBzb2x2ZSB0 aGUgcmFjZSB3aXRoIHJldm9rZV9kZXZtZW0oKSwgYnV0IGl0IGlzIHJlYWxseSB1Z2x5Lgo+Cj4g SXQgd291bGQgYmUgbXVjaCBuaWNlciB0byB3cmFwIGEgcndzZW0gYXJvdW5kIHRoaXMgYWNjZXNz IGFuZCB0aGUgdW5tYXAuCj4KPiBBbnkgcGxhY2UgdXNpbmcgaXQgaGFzIGEgbmljZSBsaW5lYXIg dHJhbnNsYXRpb24gZnJvbSB2bV9vZmYgdG8gcGZuLAo+IHNvIEkgZG9uJ3QgdGhpbmsgdGhlcmUg aXMgYSBzdWNoIGEgZ29vZCByZWFzb24gdG8gdXNlIGZvbGxvd19wdGUgaW4KPiB0aGUgZmlyc3Qg cGxhY2UuCj4KPiBpZSB3aHkgbm90IHRoZSBoZWxwZXIgYmUgdGhpczoKPgo+ICBpbnQgZ2VuZXJp Y19hY2Nlc3NfcGh5cyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ3Byb3QsCj4g ICAgICAgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBib29sIHdyaXRlKQo+Cj4gVGhlbiBzb21ldGhp bmcgbGlrZSBkZXYvbWVtIHdvdWxkIGNvbXB1dGUgcGZuIGFuZCBvYnRhaW4gdGhlIGxvY2s6Cj4K PiBkZXZfYWNjZXNzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFk ZHIsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRlKQo+IHsKPiAgICAgIGNwdV9hZGRyID0g dm1hLT52bV9wZ29mZipQQUdFX1NJWkUgKyAoYWRkciAtIHZtYS0+dm1fc3RhcnQpKTsKPgo+ICAg ICAgLyogRklYTUU6IEhhcyB0byBiZSBvdmVyIGVhY2ggcGFnZSBvZiBsZW4gKi8KPiAgICAgIGlm ICghZGV2bWVtX2lzX2FsbG93ZWRfYWNjZXNzKFBIWVNfUEZOKGNwdV9hZGRyLzQwOTYpKSkKPiAg ICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4KPiAgICAgIGRvd25fcmVhZCgmbWVtX3NlbSk7Cj4g ICAgICBnZW5lcmljX2FjY2Vzc19waHlzKGNwdV9hZGRyLzQwOTYsIHBncHJvdF92YWwodm1hLT52 bV9wYWdlX3Byb3QpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGxlbiwgd3JpdGUp Owo+ICAgICAgdXBfcmVhZCgmbWVtX3NlbSk7Cj4gfQo+Cj4gVGhlIG90aGVyIGNhc2VzIGxvb2tl ZCBzaW1wbGVyIGJlY2F1c2UgdGhleSBkb24ndCByZXZva2UsIGhlcmUgdGhlCj4gbW1hcF9zZW0g YWxvbmUgc2hvdWxkIGJlIGVub3VnaCBwcm90ZWN0aW9uLCB0aGV5IHdvdWxkIGp1c3QgbmVlZCB0 bwo+IHByb3ZpZGUgdGhlIGxpbmVhciB0cmFuc2xhdGlvbiB0byBwZm4uCj4KPiBXaGF0IGRvIHlv dSB0aGluaz8KCkkgdGhpbmsgaXQnZCBmaXggdGhlIGJ1ZywgdW50aWwgc29tZW9uZSB3aXJlcyAt PmFjY2VzcyB1cCBmb3IKZHJpdmVycy9ncHUsIG9yIHRoZSBuZXh0IHN1YnN5c3RlbS4gVGhpcyBp cyBhbHNvIGp1c3QgZm9yIHB0cmFjZSwgc28Kd2UgcmVhbGx5IGRvbid0IGNhcmUgd2hlbiB3ZSBz dGFsbCB0aGUgdm0gYmFkbHkgYW5kIG90aGVyIHNpbGx5CnRoaW5ncy4gU28gSSBmaWd1cmVkIHRo ZSBzb21ld2hhdCB1Z2x5LCBidXQgZnVsbCBnZW5lcmljIHNvbHV0aW9uIGlzCnRoZSBiZXR0ZXIg b25lLCBzbyB0aGF0IHBlb3BsZSB3aG8gd2FudCB0byBiZSBhYmxlIHRvIHB0cmFjZQpyZWFkL3dy aXRlIHRoZWlyIGlvbWVtIG1tYXBzIGNhbiBqdXN0IHNwcmlua2xlIHRoaXMgd2hlcmV2ZXIgdGhl eSBmZWVsCmxpa2UuCgpCdXQgeWVhaCBpZiB3ZSBnbyB3aXRoIG1vc3QgbWluaW1hbCBmaXgsIGku ZS4gb25seSB0cnlpbmcgdG8gZml4IHRoZQpjdXJyZW50IHVzZXJzLCB0aGVuIHlvdXIgdGhpbmcg c2hvdWxkIHdvcmsgYW5kIGlzIHNpbXBsZXIuIEJ1dCBpdApsZWF2ZXMgdGhlIGRvb3Igb3BlbiBm b3IgZnV0dXJlIHByb2JsZW1zLgotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo= 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=-6.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 B2488C4727E for ; Wed, 7 Oct 2020 18:01:58 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 8DECD2168B for ; Wed, 7 Oct 2020 18:01:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="XlsYCfTV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8DECD2168B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 789786E916; Wed, 7 Oct 2020 18:01:55 +0000 (UTC) Received: from mail-oo1-xc44.google.com (mail-oo1-xc44.google.com [IPv6:2607:f8b0:4864:20::c44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0F8A36E916 for ; Wed, 7 Oct 2020 18:01:54 +0000 (UTC) Received: by mail-oo1-xc44.google.com with SMTP id 4so835240ooh.11 for ; Wed, 07 Oct 2020 11:01:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=KjKZykFuT09vi8gvWSxWfIoih5+HtjIRxuS5MgzFTGo=; b=XlsYCfTVgW+6nmGAiv0O62GLPsC5r7eB+oidAEHNavDRGpWicEbtNZg9to7A5saHMp zaYRD/gT5inYX9JmqOP5ZzySgAIOp0+59TPao6y2kIbw9G7KU0mdvCuhCQrafShecj0J tHZf4mGHu3aegW49dmX0ZJptYBRUrRuO4MkvA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=KjKZykFuT09vi8gvWSxWfIoih5+HtjIRxuS5MgzFTGo=; b=EfHgqVw1LS2OpQ8Fnc7EoGvnrpEMkw8GHELbiVFNusF70/cnGRIeSC4+NgACwSH78R cqcfYAtiLyxmiQYtgVh0KldiKgSN1PF/gD9qN0ZKGfYbDiejXnvCsjBOCuD7S8K8HGrv Qb68SyUFi5CNkn1ZutuE50n0wRAn7ZaiAL8+JaizzANmBSXq/8lcNTd5i4ewKpI5UBXJ YGbOax4GlleOaf7EFuP6udN8StDkZp/RWb6VuTqjnnQcF1RDTJC0qbspFIHwb/Aafxhs t/ustXoLMGbNiN+tikdQS7JAr3gny+m/9yng2qiTDMTCY7hYguKtpNhOS0IZMet9eb8V OQZA== X-Gm-Message-State: AOAM530PXfvoHr918MzhI/hbNP6+zhfPcJkTT9trfkRyUIA/EwcWBLke 4L7iHYzo8gfewFJGl9FWhyT/5UN9oSGmO23IWo4afg== X-Google-Smtp-Source: ABdhPJwJzYY7PIFYfmYEAKc+uMwrEIxle3PFN75o5nMMKSdxenHBbi1fgd2mUNbWFOGRvdaIUhxGwTNij1DRYovGNtE= X-Received: by 2002:a4a:c011:: with SMTP id v17mr2806667oop.89.1602093713265; Wed, 07 Oct 2020 11:01:53 -0700 (PDT) MIME-Version: 1.0 References: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> <20201007164426.1812530-8-daniel.vetter@ffwll.ch> <20201007172746.GU5177@ziepe.ca> In-Reply-To: <20201007172746.GU5177@ziepe.ca> From: Daniel Vetter Date: Wed, 7 Oct 2020 20:01:42 +0200 Message-ID: Subject: Re: [PATCH 07/13] mm: close race in generic_access_phys To: Jason Gunthorpe X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-s390@vger.kernel.org, Rik van Riel , linux-samsung-soc , Jan Kara , Kees Cook , kvm@vger.kernel.org, Dave Airlie , LKML , DRI Development , Linux MM , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Daniel Vetter , John Hubbard , Hugh Dickins , Dan Williams , Andrew Morton , Linux ARM , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gV2VkLCBPY3QgNywgMjAyMCBhdCA3OjI3IFBNIEphc29uIEd1bnRob3JwZSA8amdnQHppZXBl LmNhPiB3cm90ZToKPgo+IE9uIFdlZCwgT2N0IDA3LCAyMDIwIGF0IDA2OjQ0OjIwUE0gKzAyMDAs IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiBXYXkgYmFjayBpdCB3YXMgYSByZWFzb25hYmxlIGFz c3VtcHRpb25zIHRoYXQgaW9tZW0gbWFwcGluZ3MgbmV2ZXIKPiA+IGNoYW5nZSB0aGUgcGZuIHJh bmdlIHRoZXkgcG9pbnQgYXQuIEJ1dCB0aGlzIGhhcyBjaGFuZ2VkOgo+ID4KPiA+IC0gZ3B1IGRy aXZlcnMgZHluYW1pY2FsbHkgbWFuYWdlIHRoZWlyIG1lbW9yeSBub3dhZGF5cywgaW52YWxpZGF0 aW5nCj4gPiAgIHB0ZXMgd2l0aCB1bm1hcF9tYXBwaW5nX3JhbmdlIHdoZW4gYnVmZmVycyBnZXQg bW92ZWQKPiA+Cj4gPiAtIGNvbnRpZ3VvdXMgZG1hIGFsbG9jYXRpb25zIGhhdmUgbW92ZWQgZnJv bSBkZWRpY2F0ZWQgY2FydmV0b3V0cyB0bwo+ID4gICBjbWEgcmVnaW9ucy4gVGhpcyBtZWFucyBp ZiB3ZSBtaXNzIHRoZSB1bm1hcCB0aGUgcGZuIG1pZ2h0IGNvbnRhaW4KPiA+ICAgcGFnZWNhY2hl IG9yIGFub24gbWVtb3J5ICh3ZWxsIGFueXRoaW5nIGFsbG9jYXRlZCB3aXRoIEdGUF9NT1ZFQUJM RSkKPiA+Cj4gPiAtIGV2ZW4gL2Rldi9tZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4g dGhlIGtlcm5lbCByZXF1ZXN0cyB0aGF0Cj4gPiAgIGlvbWVtIHJlZ2lvbiB3aGVuIENPTkZJR19J T19TVFJJQ1RfREVWTUVNIGlzIHNldCwgc2VlIDMyMzRhYzY2NGE4Nwo+ID4gICAoIi9kZXYvbWVt OiBSZXZva2UgbWFwcGluZ3Mgd2hlbiBhIGRyaXZlciBjbGFpbXMgdGhlIHJlZ2lvbiIpCj4gPgo+ ID4gQWNjZXNzaW5nIHBmbnMgb2J0YWluZWQgZnJvbSBwdGVzIHdpdGhvdXQgaG9sZGluZyBhbGwg dGhlIGxvY2tzIGlzCj4gPiB0aGVyZWZvcmUgbm8gbG9uZ2VyIGEgZ29vZCBpZGVhLiBGaXggdGhp cy4KPiA+Cj4gPiBTaW5jZSBpb3JlbWFwIG1pZ2h0IG5lZWQgdG8gbWFuaXB1bGF0ZSBwYWdldGFi bGVzIHRvbyB3ZSBuZWVkIHRvIGRyb3AKPiA+IHRoZSBwdCBsb2NrIGFuZCBoYXZlIGEgcmV0cnkg bG9vcCBpZiB3ZSByYWNlZC4KPiA+Cj4gPiBXaGlsZSBhdCBpdCwgYWxzbyBhZGQga2VybmVsZG9j IGFuZCBpbXByb3ZlIHRoZSBjb21tZW50IGZvciB0aGUKPiA+IHZtYV9vcHMtPmFjY2VzcyBmdW5j dGlvbi4gSXQncyBmb3IgYWNjZXNzaW5nLCBub3QgZm9yIG1vdmluZyB0aGUKPiA+IG1lbW9yeSBm cm9tIGlvbWVtIHRvIHN5c3RlbSBtZW1vcnksIGFzIHRoZSBvbGQgY29tbWVudCBzZWVtZWQgdG8K PiA+IHN1Z2dlc3QuCj4gPgo+ID4gUmVmZXJlbmNlczogMjhiMmVlMjBjN2NiICgiYWNjZXNzX3By b2Nlc3Nfdm0gZGV2aWNlIG1lbW9yeSBpbmZyYXN0cnVjdHVyZSIpCj4gPiBDYzogSmFzb24gR3Vu dGhvcnBlIDxqZ2dAemllcGUuY2E+Cj4gPiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFt c0BpbnRlbC5jb20+Cj4gPiBDYzogS2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+Cj4g PiBDYzogUmlrIHZhbiBSaWVsIDxyaWVsQHJlZGhhdC5jb20+Cj4gPiBDYzogQmVuamFtaW4gSGVy cmVuc21pZHQgPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZz4KPiA+IENjOiBEYXZlIEFpcmxpZSA8 YWlybGllZEBsaW51eC5pZT4KPiA+IENjOiBIdWdoIERpY2tpbnMgPGh1Z2hAdmVyaXRhcy5jb20+ Cj4gPiBDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KPiA+IENj OiBKb2huIEh1YmJhcmQgPGpodWJiYXJkQG52aWRpYS5jb20+Cj4gPiBDYzogSsOpcsO0bWUgR2xp c3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+Cj4gPiBDYzogSmFuIEthcmEgPGphY2tAc3VzZS5jej4K PiA+IENjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KPiA+IENjOiBs aW51eC1tbUBrdmFjay5vcmcKPiA+IENjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKPiA+IENjOiBsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKPiA+IENjOiBs aW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKPiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgaW5jbHVkZS9saW51eC9t bS5oIHwgIDMgKystCj4gPiAgbW0vbWVtb3J5LmMgICAgICAgIHwgNDQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDQ0IGlu c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4KPiBUaGlzIGRvZXMgc2VlbSB0byBzb2x2ZSB0 aGUgcmFjZSB3aXRoIHJldm9rZV9kZXZtZW0oKSwgYnV0IGl0IGlzIHJlYWxseSB1Z2x5Lgo+Cj4g SXQgd291bGQgYmUgbXVjaCBuaWNlciB0byB3cmFwIGEgcndzZW0gYXJvdW5kIHRoaXMgYWNjZXNz IGFuZCB0aGUgdW5tYXAuCj4KPiBBbnkgcGxhY2UgdXNpbmcgaXQgaGFzIGEgbmljZSBsaW5lYXIg dHJhbnNsYXRpb24gZnJvbSB2bV9vZmYgdG8gcGZuLAo+IHNvIEkgZG9uJ3QgdGhpbmsgdGhlcmUg aXMgYSBzdWNoIGEgZ29vZCByZWFzb24gdG8gdXNlIGZvbGxvd19wdGUgaW4KPiB0aGUgZmlyc3Qg cGxhY2UuCj4KPiBpZSB3aHkgbm90IHRoZSBoZWxwZXIgYmUgdGhpczoKPgo+ICBpbnQgZ2VuZXJp Y19hY2Nlc3NfcGh5cyh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBwZ3Byb3QsCj4g ICAgICAgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBib29sIHdyaXRlKQo+Cj4gVGhlbiBzb21ldGhp bmcgbGlrZSBkZXYvbWVtIHdvdWxkIGNvbXB1dGUgcGZuIGFuZCBvYnRhaW4gdGhlIGxvY2s6Cj4K PiBkZXZfYWNjZXNzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFk ZHIsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRlKQo+IHsKPiAgICAgIGNwdV9hZGRyID0g dm1hLT52bV9wZ29mZipQQUdFX1NJWkUgKyAoYWRkciAtIHZtYS0+dm1fc3RhcnQpKTsKPgo+ICAg ICAgLyogRklYTUU6IEhhcyB0byBiZSBvdmVyIGVhY2ggcGFnZSBvZiBsZW4gKi8KPiAgICAgIGlm ICghZGV2bWVtX2lzX2FsbG93ZWRfYWNjZXNzKFBIWVNfUEZOKGNwdV9hZGRyLzQwOTYpKSkKPiAg ICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4KPiAgICAgIGRvd25fcmVhZCgmbWVtX3NlbSk7Cj4g ICAgICBnZW5lcmljX2FjY2Vzc19waHlzKGNwdV9hZGRyLzQwOTYsIHBncHJvdF92YWwodm1hLT52 bV9wYWdlX3Byb3QpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGxlbiwgd3JpdGUp Owo+ICAgICAgdXBfcmVhZCgmbWVtX3NlbSk7Cj4gfQo+Cj4gVGhlIG90aGVyIGNhc2VzIGxvb2tl ZCBzaW1wbGVyIGJlY2F1c2UgdGhleSBkb24ndCByZXZva2UsIGhlcmUgdGhlCj4gbW1hcF9zZW0g YWxvbmUgc2hvdWxkIGJlIGVub3VnaCBwcm90ZWN0aW9uLCB0aGV5IHdvdWxkIGp1c3QgbmVlZCB0 bwo+IHByb3ZpZGUgdGhlIGxpbmVhciB0cmFuc2xhdGlvbiB0byBwZm4uCj4KPiBXaGF0IGRvIHlv dSB0aGluaz8KCkkgdGhpbmsgaXQnZCBmaXggdGhlIGJ1ZywgdW50aWwgc29tZW9uZSB3aXJlcyAt PmFjY2VzcyB1cCBmb3IKZHJpdmVycy9ncHUsIG9yIHRoZSBuZXh0IHN1YnN5c3RlbS4gVGhpcyBp cyBhbHNvIGp1c3QgZm9yIHB0cmFjZSwgc28Kd2UgcmVhbGx5IGRvbid0IGNhcmUgd2hlbiB3ZSBz dGFsbCB0aGUgdm0gYmFkbHkgYW5kIG90aGVyIHNpbGx5CnRoaW5ncy4gU28gSSBmaWd1cmVkIHRo ZSBzb21ld2hhdCB1Z2x5LCBidXQgZnVsbCBnZW5lcmljIHNvbHV0aW9uIGlzCnRoZSBiZXR0ZXIg b25lLCBzbyB0aGF0IHBlb3BsZSB3aG8gd2FudCB0byBiZSBhYmxlIHRvIHB0cmFjZQpyZWFkL3dy aXRlIHRoZWlyIGlvbWVtIG1tYXBzIGNhbiBqdXN0IHNwcmlua2xlIHRoaXMgd2hlcmV2ZXIgdGhl eSBmZWVsCmxpa2UuCgpCdXQgeWVhaCBpZiB3ZSBnbyB3aXRoIG1vc3QgbWluaW1hbCBmaXgsIGku ZS4gb25seSB0cnlpbmcgdG8gZml4IHRoZQpjdXJyZW50IHVzZXJzLCB0aGVuIHlvdXIgdGhpbmcg c2hvdWxkIHdvcmsgYW5kIGlzIHNpbXBsZXIuIEJ1dCBpdApsZWF2ZXMgdGhlIGRvb3Igb3BlbiBm b3IgZnV0dXJlIHByb2JsZW1zLgotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK