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=-9.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,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 81BC0C433E7 for ; Thu, 8 Oct 2020 17:16:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B46F722200 for ; Thu, 8 Oct 2020 17:16:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="MVbqu90h" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731909AbgJHRQc (ORCPT ); Thu, 8 Oct 2020 13:16:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730763AbgJHRQb (ORCPT ); Thu, 8 Oct 2020 13:16:31 -0400 Received: from mail-oi1-x244.google.com (mail-oi1-x244.google.com [IPv6:2607:f8b0:4864:20::244]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F5EDC0613D3 for ; Thu, 8 Oct 2020 10:16:31 -0700 (PDT) Received: by mail-oi1-x244.google.com with SMTP id w141so7105093oia.2 for ; Thu, 08 Oct 2020 10:16:31 -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=cJwmJXmW0n/BmBUTL74IPviQIG2habiKD0MU6pN8zhU=; b=MVbqu90hJmyrd+sPPkFw6E75unJ8rLwKVenxZgPlZQ0sDsjzqGtKeUBv82TcScacos yekx36c3FkXtWDgWxhXXmugd3dPf2By3cV1JwiAspr3dL9gnVzSAVLnXNq7o/V7irYdI 7mZVqNu2dmuv8QMF1QlWFB/Rs/OIshbHRXrbM= 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=cJwmJXmW0n/BmBUTL74IPviQIG2habiKD0MU6pN8zhU=; b=GHZ1bcG31vU1R4JFUturOcgL2z1iVXIVSAYpYq6/zh8TaanzgGm0BdVVjhrUsmwbem YtMsgikr7g8LU1rW/icGI+i4rpSdbCzK6ZzFA+ZDcEES00eLgB4E2D93+yXSPC7mn4Jm 8UDX4U4TU44OdzZEExmiBSaZnN46lCnCiSWfm3hk0wSxA5rWVsVXTKUcM6nOLNEZtn2O KWWWQJv1epbbZYt7GEXO3cn9ob3wO1OfHNv4rJlu1KIGazdSFw9Kv1jrhpMgB4fUrPs9 Xy5PTBnJVxqxpYSHwjYtX1WgyKO4tZSBbHfYqAx8CbvPdzQGwCeQZiOWo8uVZ8w0PNsi jpiQ== X-Gm-Message-State: AOAM532ci5mDxw2uF9vhx/a2bQkmsV4fVmgTTPm6o85wMM2r319Klz02 YuZaUXikN6Yi6JhGGHMdEBH1Cw9WxYQN7Rw4sQy8ZQ== X-Google-Smtp-Source: ABdhPJzf3e2p0tuIJ1xApDWpklSlKGyjhh7bQmds7tEcm9rrUTBDyTXsYZhQ+pIZOdsswK//Z2G6wQ7JuLDsqNpcK5Y= X-Received: by 2002:a05:6808:206:: with SMTP id l6mr5847034oie.128.1602177390724; Thu, 08 Oct 2020 10:16:30 -0700 (PDT) MIME-Version: 1.0 References: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> <20201007164426.1812530-9-daniel.vetter@ffwll.ch> <20201008184440.4c3bebed@thinkpad> In-Reply-To: <20201008184440.4c3bebed@thinkpad> From: Daniel Vetter Date: Thu, 8 Oct 2020 19:16:19 +0200 Message-ID: Subject: Re: [PATCH 08/13] s390/pci: Remove races against pte updates To: Gerald Schaefer Cc: DRI Development , LKML , KVM list , Linux MM , Linux ARM , linux-samsung-soc , "open list:DMA BUFFER SHARING FRAMEWORK" , linux-s390 , Daniel Vetter , Jason Gunthorpe , Dan Williams , Kees Cook , Andrew Morton , John Hubbard , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Jan Kara , Niklas Schnelle 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 Thu, Oct 8, 2020 at 6:44 PM Gerald Schaefer wrote: > > On Wed, 7 Oct 2020 18:44:21 +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 zpci_memcpy_from|toio seems to not do anything nefarious with > > locks we just need to open code get_pfn and follow_pfn and make sure > > we drop the locks only after we've done. The write function also needs > > the copy_from_user move, since we can't take userspace faults while > > holding the mmap sem. > > > > Signed-off-by: Daniel Vetter > > Cc: Jason Gunthorpe > > Cc: Dan Williams > > Cc: Kees Cook > > 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 > > Cc: Niklas Schnelle > > Cc: Gerald Schaefer > > Cc: linux-s390@vger.kernel.org > > --- > > arch/s390/pci/pci_mmio.c | 98 +++++++++++++++++++++++----------------- > > 1 file changed, 57 insertions(+), 41 deletions(-) > > Looks good, thanks. Also survived some basic function test. Only some > minor nitpick, see below. > > Reviewed-by: Gerald Schaefer > > > > > diff --git a/arch/s390/pci/pci_mmio.c b/arch/s390/pci/pci_mmio.c > > index 401cf670a243..4d194cb09372 100644 > > --- a/arch/s390/pci/pci_mmio.c > > +++ b/arch/s390/pci/pci_mmio.c > > @@ -119,33 +119,15 @@ static inline int __memcpy_toio_inuser(void __iom= em *dst, > > return rc; > > } > > > > -static long get_pfn(unsigned long user_addr, unsigned long access, > > - unsigned long *pfn) > > -{ > > - struct vm_area_struct *vma; > > - long ret; > > - > > - mmap_read_lock(current->mm); > > - ret =3D -EINVAL; > > - vma =3D find_vma(current->mm, user_addr); > > - if (!vma) > > - goto out; > > - ret =3D -EACCES; > > - if (!(vma->vm_flags & access)) > > - goto out; > > - ret =3D follow_pfn(vma, user_addr, pfn); > > -out: > > - mmap_read_unlock(current->mm); > > - return ret; > > -} > > - > > SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned long, mmio_addr, > > const void __user *, user_buffer, size_t, length) > > { > > u8 local_buf[64]; > > void __iomem *io_addr; > > void *buf; > > - unsigned long pfn; > > + struct vm_area_struct *vma; > > + pte_t *ptep; > > + spinlock_t *ptl; > > long ret; > > > > if (!zpci_is_enabled()) > > @@ -158,7 +140,7 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned long,= mmio_addr, > > * We only support write access to MIO capable devices if we are = on > > * a MIO enabled system. Otherwise we would have to check for eve= ry > > * address if it is a special ZPCI_ADDR and would have to do > > - * a get_pfn() which we don't need for MIO capable devices. Curr= ently > > + * a pfn lookup which we don't need for MIO capable devices. Cur= rently > > * ISM devices are the only devices without MIO support and there= is no > > * known need for accessing these from userspace. > > */ > > @@ -176,21 +158,37 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned lon= g, mmio_addr, > > } else > > buf =3D local_buf; > > > > - ret =3D get_pfn(mmio_addr, VM_WRITE, &pfn); > > + ret =3D -EFAULT; > > + if (copy_from_user(buf, user_buffer, length)) > > + goto out_free; > > + > > + mmap_read_lock(current->mm); > > + ret =3D -EINVAL; > > + vma =3D find_vma(current->mm, mmio_addr); > > + if (!vma) > > + goto out_unlock_mmap; > > + ret =3D -EACCES; > > + if (!(vma->vm_flags & VM_WRITE)) > > + goto out_unlock_mmap; > > + if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) > > + goto out_unlock_mmap; > > That check for VM_IO | VM_PFNMAP was previously hidden inside follow_pfn(= ), > and that would have returned -EINVAL in this case. With your change, we > now return -EACCES. Not sure how important that is, but it feels wrong. > Maybe move the VM_IO | VM_PFNMAP check up, before the ret =3D -EACCES? I tried to keep the errno unchanged, but fumbled this. Will fix in the next round, thanks a lot for reviewing and testing. For merging I think this one here would be best through the s390 tree, since it can be merged without any of the others in here. Thanks, Daniel > > [...] > > @@ -306,22 +306,38 @@ SYSCALL_DEFINE3(s390_pci_mmio_read, unsigned long= , mmio_addr, > > buf =3D local_buf; > > } > > > > - ret =3D get_pfn(mmio_addr, VM_READ, &pfn); > > + mmap_read_lock(current->mm); > > + ret =3D -EINVAL; > > + vma =3D find_vma(current->mm, mmio_addr); > > + if (!vma) > > + goto out_unlock_mmap; > > + ret =3D -EACCES; > > + if (!(vma->vm_flags & VM_WRITE)) > > + goto out_unlock_mmap; > > + if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) > > + goto out_unlock_mmap; > > Same here with VM_IO | VM_PFNMAP and -EINVAL. --=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=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 B4E00C433E7 for ; Thu, 8 Oct 2020 17:18:01 +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 21828204EF for ; Thu, 8 Oct 2020 17:18:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="m2xaXB7l"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="MVbqu90h" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 21828204EF 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=6ydK5X5bKe/MZ8MDr4SSI5iWYOsoYhoGNkWtYr8/Msc=; b=m2xaXB7lVtNRiFggR47xgwRyQ NWI8cl3um0r/fLNrS2i+kMW7W2twZcpYdN+oVzsmP2uA8YYoJ6U+dJ2nJgjXrPVSkhcDsRcU9Ulfg bZ+kaO9u0J7fp4eUudhkbKpGCsReVnXat7+32qshIzlQygfFbPFbzgKKRIETDGDpDRAMYRG3wW7D/ ninLtVqoUSmyh0pHGKVbWhdbYkyE3t/0n/Wo6QYAGN28ETh0kbNnyfufQFjyN1HyOghx3LWlc9WG+ CDzBwra2FJp/rvmVCwuN1Seg3eZc/EsWkhcMvHsU29OcFJ98MEgsVq0AMWzx9VYZv4abcFwKhxxVV OOAaLtc+g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQZWu-0000Oy-FG; Thu, 08 Oct 2020 17:16:36 +0000 Received: from mail-oi1-x242.google.com ([2607:f8b0:4864:20::242]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQZWs-0000NA-0l for linux-arm-kernel@lists.infradead.org; Thu, 08 Oct 2020 17:16:35 +0000 Received: by mail-oi1-x242.google.com with SMTP id 16so7052232oix.9 for ; Thu, 08 Oct 2020 10:16:32 -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=cJwmJXmW0n/BmBUTL74IPviQIG2habiKD0MU6pN8zhU=; b=MVbqu90hJmyrd+sPPkFw6E75unJ8rLwKVenxZgPlZQ0sDsjzqGtKeUBv82TcScacos yekx36c3FkXtWDgWxhXXmugd3dPf2By3cV1JwiAspr3dL9gnVzSAVLnXNq7o/V7irYdI 7mZVqNu2dmuv8QMF1QlWFB/Rs/OIshbHRXrbM= 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=cJwmJXmW0n/BmBUTL74IPviQIG2habiKD0MU6pN8zhU=; b=HZ9xhoS8lq24+smcmDu5kl8TXNPpZG/g2skYWvwxGJ5iZS2cn/IdE5RQVHnnPOPYT7 Gs3ebXf0Q3lr1T4dqnLv9PI9udpJMk3r/DLvBHFol2TiIT+4YAb6dZrCb3MQzmQTsASY BkkPqiCb2rqRjYSuSRHCIpehEmeZxh2S/b66f/bkNR6wfnzDYGva5Oyg5jXpECyl5wsJ 59v0GcR7i+0N/zZR5B7qnrhqfLnc8vsWolK2BPEP46QruEUovBkR5F5ziwkZad0/N5fg uOQ+N+t6uT/pktuhpmaC7HdgCyJYNbGMGaFiMerqbfqoEshU0hMwXrclU50zXtn/OObu ZCLw== X-Gm-Message-State: AOAM533bVU5KydDZMwsyDxIkot67CVnIKBQIhppgjt3+8cW1qHFHUrxz w1GSsH5ltYBEoYfEXHxgNBPBayYVTgpCcucSnZ4yvA== X-Google-Smtp-Source: ABdhPJzf3e2p0tuIJ1xApDWpklSlKGyjhh7bQmds7tEcm9rrUTBDyTXsYZhQ+pIZOdsswK//Z2G6wQ7JuLDsqNpcK5Y= X-Received: by 2002:a05:6808:206:: with SMTP id l6mr5847034oie.128.1602177390724; Thu, 08 Oct 2020 10:16:30 -0700 (PDT) MIME-Version: 1.0 References: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> <20201007164426.1812530-9-daniel.vetter@ffwll.ch> <20201008184440.4c3bebed@thinkpad> In-Reply-To: <20201008184440.4c3bebed@thinkpad> From: Daniel Vetter Date: Thu, 8 Oct 2020 19:16:19 +0200 Message-ID: Subject: Re: [PATCH 08/13] s390/pci: Remove races against pte updates To: Gerald Schaefer X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201008_131634_110067_2C13E3A0 X-CRM114-Status: GOOD ( 34.68 ) 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 , linux-samsung-soc , Jan Kara , Kees Cook , KVM list , Jason Gunthorpe , John Hubbard , Niklas Schnelle , LKML , DRI Development , Linux MM , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Daniel Vetter , 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 T24gVGh1LCBPY3QgOCwgMjAyMCBhdCA2OjQ0IFBNIEdlcmFsZCBTY2hhZWZlcgo8Z2VyYWxkLnNj aGFlZmVyQGxpbnV4LmlibS5jb20+IHdyb3RlOgo+Cj4gT24gV2VkLCAgNyBPY3QgMjAyMCAxODo0 NDoyMSArMDIwMAo+IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+IHdyb3Rl Ogo+Cj4gPiBXYXkgYmFjayBpdCB3YXMgYSByZWFzb25hYmxlIGFzc3VtcHRpb25zIHRoYXQgaW9t ZW0gbWFwcGluZ3MgbmV2ZXIKPiA+IGNoYW5nZSB0aGUgcGZuIHJhbmdlIHRoZXkgcG9pbnQgYXQu IEJ1dCB0aGlzIGhhcyBjaGFuZ2VkOgo+ID4KPiA+IC0gZ3B1IGRyaXZlcnMgZHluYW1pY2FsbHkg bWFuYWdlIHRoZWlyIG1lbW9yeSBub3dhZGF5cywgaW52YWxpZGF0aW5nCj4gPiBwdGVzIHdpdGgg dW5tYXBfbWFwcGluZ19yYW5nZSB3aGVuIGJ1ZmZlcnMgZ2V0IG1vdmVkCj4gPgo+ID4gLSBjb250 aWd1b3VzIGRtYSBhbGxvY2F0aW9ucyBoYXZlIG1vdmVkIGZyb20gZGVkaWNhdGVkIGNhcnZldG91 dHMgdG8KPiA+IGNtYSByZWdpb25zLiBUaGlzIG1lYW5zIGlmIHdlIG1pc3MgdGhlIHVubWFwIHRo ZSBwZm4gbWlnaHQgY29udGFpbgo+ID4gcGFnZWNhY2hlIG9yIGFub24gbWVtb3J5ICh3ZWxsIGFu eXRoaW5nIGFsbG9jYXRlZCB3aXRoIEdGUF9NT1ZFQUJMRSkKPiA+Cj4gPiAtIGV2ZW4gL2Rldi9t ZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4gdGhlIGtlcm5lbCByZXF1ZXN0cyB0aGF0 Cj4gPiBpb21lbSByZWdpb24gd2hlbiBDT05GSUdfSU9fU1RSSUNUX0RFVk1FTSBpcyBzZXQsIHNl ZSAzMjM0YWM2NjRhODcKPiA+ICgiL2Rldi9tZW06IFJldm9rZSBtYXBwaW5ncyB3aGVuIGEgZHJp dmVyIGNsYWltcyB0aGUgcmVnaW9uIikKPiA+Cj4gPiBBY2Nlc3NpbmcgcGZucyBvYnRhaW5lZCBm cm9tIHB0ZXMgd2l0aG91dCBob2xkaW5nIGFsbCB0aGUgbG9ja3MgaXMKPiA+IHRoZXJlZm9yZSBu byBsb25nZXIgYSBnb29kIGlkZWEuIEZpeCB0aGlzLgo+ID4KPiA+IFNpbmNlIHpwY2lfbWVtY3B5 X2Zyb218dG9pbyBzZWVtcyB0byBub3QgZG8gYW55dGhpbmcgbmVmYXJpb3VzIHdpdGgKPiA+IGxv Y2tzIHdlIGp1c3QgbmVlZCB0byBvcGVuIGNvZGUgZ2V0X3BmbiBhbmQgZm9sbG93X3BmbiBhbmQg bWFrZSBzdXJlCj4gPiB3ZSBkcm9wIHRoZSBsb2NrcyBvbmx5IGFmdGVyIHdlJ3ZlIGRvbmUuIFRo ZSB3cml0ZSBmdW5jdGlvbiBhbHNvIG5lZWRzCj4gPiB0aGUgY29weV9mcm9tX3VzZXIgbW92ZSwg c2luY2Ugd2UgY2FuJ3QgdGFrZSB1c2Vyc3BhY2UgZmF1bHRzIHdoaWxlCj4gPiBob2xkaW5nIHRo ZSBtbWFwIHNlbS4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGludGVsLmNvbT4KPiA+IENjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0B6aWVwZS5jYT4K PiA+IENjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KPiA+IENjOiBL ZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4KPiA+IENjOiBBbmRyZXcgTW9ydG9uIDxh a3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgo+ID4gQ2M6IEpvaG4gSHViYmFyZCA8amh1YmJhcmRA bnZpZGlhLmNvbT4KPiA+IENjOiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4K PiA+IENjOiBKYW4gS2FyYSA8amFja0BzdXNlLmN6Pgo+ID4gQ2M6IERhbiBXaWxsaWFtcyA8ZGFu Lmoud2lsbGlhbXNAaW50ZWwuY29tPgo+ID4gQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwo+ID4gQ2M6 IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ID4gQ2M6IGxpbnV4LXNhbXN1 bmctc29jQHZnZXIua2VybmVsLm9yZwo+ID4gQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y Zwo+ID4gQ2M6IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KPiA+IENj OiBHZXJhbGQgU2NoYWVmZXIgPGdlcmFsZC5zY2hhZWZlckBsaW51eC5pYm0uY29tPgo+ID4gQ2M6 IGxpbnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCj4gPiAtLS0KPiA+ICBhcmNoL3MzOTAvcGNpL3Bj aV9tbWlvLmMgfCA5OCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4g PiAgMSBmaWxlIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQo+Cj4g TG9va3MgZ29vZCwgdGhhbmtzLiBBbHNvIHN1cnZpdmVkIHNvbWUgYmFzaWMgZnVuY3Rpb24gdGVz dC4gT25seSBzb21lCj4gbWlub3Igbml0cGljaywgc2VlIGJlbG93Lgo+Cj4gUmV2aWV3ZWQtYnk6 IEdlcmFsZCBTY2hhZWZlciA8Z2VyYWxkLnNjaGFlZmVyQGxpbnV4LmlibS5jb20+Cj4KPiA+Cj4g PiBkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jIGIvYXJjaC9zMzkwL3BjaS9w Y2lfbW1pby5jCj4gPiBpbmRleCA0MDFjZjY3MGEyNDMuLjRkMTk0Y2IwOTM3MiAxMDA2NDQKPiA+ IC0tLSBhL2FyY2gvczM5MC9wY2kvcGNpX21taW8uYwo+ID4gKysrIGIvYXJjaC9zMzkwL3BjaS9w Y2lfbW1pby5jCj4gPiBAQCAtMTE5LDMzICsxMTksMTUgQEAgc3RhdGljIGlubGluZSBpbnQgX19t ZW1jcHlfdG9pb19pbnVzZXIodm9pZCBfX2lvbWVtICpkc3QsCj4gPiAgICAgICByZXR1cm4gcmM7 Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgbG9uZyBnZXRfcGZuKHVuc2lnbmVkIGxvbmcgdXNlcl9h ZGRyLCB1bnNpZ25lZCBsb25nIGFjY2VzcywKPiA+IC0gICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgKnBmbikKPiA+IC17Cj4gPiAtICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsK PiA+IC0gICAgIGxvbmcgcmV0Owo+ID4gLQo+ID4gLSAgICAgbW1hcF9yZWFkX2xvY2soY3VycmVu dC0+bW0pOwo+ID4gLSAgICAgcmV0ID0gLUVJTlZBTDsKPiA+IC0gICAgIHZtYSA9IGZpbmRfdm1h KGN1cnJlbnQtPm1tLCB1c2VyX2FkZHIpOwo+ID4gLSAgICAgaWYgKCF2bWEpCj4gPiAtICAgICAg ICAgICAgIGdvdG8gb3V0Owo+ID4gLSAgICAgcmV0ID0gLUVBQ0NFUzsKPiA+IC0gICAgIGlmICgh KHZtYS0+dm1fZmxhZ3MgJiBhY2Nlc3MpKQo+ID4gLSAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ IC0gICAgIHJldCA9IGZvbGxvd19wZm4odm1hLCB1c2VyX2FkZHIsIHBmbik7Cj4gPiAtb3V0Ogo+ ID4gLSAgICAgbW1hcF9yZWFkX3VubG9jayhjdXJyZW50LT5tbSk7Cj4gPiAtICAgICByZXR1cm4g cmV0Owo+ID4gLX0KPiA+IC0KPiA+ICBTWVNDQUxMX0RFRklORTMoczM5MF9wY2lfbW1pb193cml0 ZSwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLAo+ID4gICAgICAgICAgICAgICBjb25zdCB2b2lk IF9fdXNlciAqLCB1c2VyX2J1ZmZlciwgc2l6ZV90LCBsZW5ndGgpCj4gPiAgewo+ID4gICAgICAg dTggbG9jYWxfYnVmWzY0XTsKPiA+ICAgICAgIHZvaWQgX19pb21lbSAqaW9fYWRkcjsKPiA+ICAg ICAgIHZvaWQgKmJ1ZjsKPiA+IC0gICAgIHVuc2lnbmVkIGxvbmcgcGZuOwo+ID4gKyAgICAgc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7Cj4gPiArICAgICBwdGVfdCAqcHRlcDsKPiA+ICsgICAg IHNwaW5sb2NrX3QgKnB0bDsKPiA+ICAgICAgIGxvbmcgcmV0Owo+ID4KPiA+ICAgICAgIGlmICgh enBjaV9pc19lbmFibGVkKCkpCj4gPiBAQCAtMTU4LDcgKzE0MCw3IEBAIFNZU0NBTExfREVGSU5F MyhzMzkwX3BjaV9tbWlvX3dyaXRlLCB1bnNpZ25lZCBsb25nLCBtbWlvX2FkZHIsCj4gPiAgICAg ICAgKiBXZSBvbmx5IHN1cHBvcnQgd3JpdGUgYWNjZXNzIHRvIE1JTyBjYXBhYmxlIGRldmljZXMg aWYgd2UgYXJlIG9uCj4gPiAgICAgICAgKiBhIE1JTyBlbmFibGVkIHN5c3RlbS4gT3RoZXJ3aXNl IHdlIHdvdWxkIGhhdmUgdG8gY2hlY2sgZm9yIGV2ZXJ5Cj4gPiAgICAgICAgKiBhZGRyZXNzIGlm IGl0IGlzIGEgc3BlY2lhbCBaUENJX0FERFIgYW5kIHdvdWxkIGhhdmUgdG8gZG8KPiA+IC0gICAg ICAqIGEgZ2V0X3BmbigpIHdoaWNoIHdlIGRvbid0IG5lZWQgZm9yIE1JTyBjYXBhYmxlIGRldmlj ZXMuICBDdXJyZW50bHkKPiA+ICsgICAgICAqIGEgcGZuIGxvb2t1cCB3aGljaCB3ZSBkb24ndCBu ZWVkIGZvciBNSU8gY2FwYWJsZSBkZXZpY2VzLiAgQ3VycmVudGx5Cj4gPiAgICAgICAgKiBJU00g ZGV2aWNlcyBhcmUgdGhlIG9ubHkgZGV2aWNlcyB3aXRob3V0IE1JTyBzdXBwb3J0IGFuZCB0aGVy ZSBpcyBubwo+ID4gICAgICAgICoga25vd24gbmVlZCBmb3IgYWNjZXNzaW5nIHRoZXNlIGZyb20g dXNlcnNwYWNlLgo+ID4gICAgICAgICovCj4gPiBAQCAtMTc2LDIxICsxNTgsMzcgQEAgU1lTQ0FM TF9ERUZJTkUzKHMzOTBfcGNpX21taW9fd3JpdGUsIHVuc2lnbmVkIGxvbmcsIG1taW9fYWRkciwK PiA+ICAgICAgIH0gZWxzZQo+ID4gICAgICAgICAgICAgICBidWYgPSBsb2NhbF9idWY7Cj4gPgo+ ID4gLSAgICAgcmV0ID0gZ2V0X3BmbihtbWlvX2FkZHIsIFZNX1dSSVRFLCAmcGZuKTsKPiA+ICsg ICAgIHJldCA9IC1FRkFVTFQ7Cj4gPiArICAgICBpZiAoY29weV9mcm9tX3VzZXIoYnVmLCB1c2Vy X2J1ZmZlciwgbGVuZ3RoKSkKPiA+ICsgICAgICAgICAgICAgZ290byBvdXRfZnJlZTsKPiA+ICsK PiA+ICsgICAgIG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtPm1tKTsKPiA+ICsgICAgIHJldCA9IC1F SU5WQUw7Cj4gPiArICAgICB2bWEgPSBmaW5kX3ZtYShjdXJyZW50LT5tbSwgbW1pb19hZGRyKTsK PiA+ICsgICAgIGlmICghdm1hKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2tfbW1h cDsKPiA+ICsgICAgIHJldCA9IC1FQUNDRVM7Cj4gPiArICAgICBpZiAoISh2bWEtPnZtX2ZsYWdz ICYgVk1fV1JJVEUpKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2tfbW1hcDsKPiA+ ICsgICAgIGlmICghKHZtYS0+dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSkKPiA+ICsg ICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrX21tYXA7Cj4KPiBUaGF0IGNoZWNrIGZvciBWTV9J TyB8IFZNX1BGTk1BUCB3YXMgcHJldmlvdXNseSBoaWRkZW4gaW5zaWRlIGZvbGxvd19wZm4oKSwK PiBhbmQgdGhhdCB3b3VsZCBoYXZlIHJldHVybmVkIC1FSU5WQUwgaW4gdGhpcyBjYXNlLiBXaXRo IHlvdXIgY2hhbmdlLCB3ZQo+IG5vdyByZXR1cm4gLUVBQ0NFUy4gTm90IHN1cmUgaG93IGltcG9y dGFudCB0aGF0IGlzLCBidXQgaXQgZmVlbHMgd3JvbmcuCj4gTWF5YmUgbW92ZSB0aGUgVk1fSU8g fCBWTV9QRk5NQVAgY2hlY2sgdXAsIGJlZm9yZSB0aGUgcmV0ID0gLUVBQ0NFUz8KCkkgdHJpZWQg dG8ga2VlcCB0aGUgZXJybm8gdW5jaGFuZ2VkLCBidXQgZnVtYmxlZCB0aGlzLiBXaWxsIGZpeCBp biB0aGUKbmV4dCByb3VuZCwgdGhhbmtzIGEgbG90IGZvciByZXZpZXdpbmcgYW5kIHRlc3Rpbmcu CgpGb3IgbWVyZ2luZyBJIHRoaW5rIHRoaXMgb25lIGhlcmUgd291bGQgYmUgYmVzdCB0aHJvdWdo IHRoZSBzMzkwIHRyZWUsCnNpbmNlIGl0IGNhbiBiZSBtZXJnZWQgd2l0aG91dCBhbnkgb2YgdGhl IG90aGVycyBpbiBoZXJlLgoKVGhhbmtzLCBEYW5pZWwKCj4KPiBbLi4uXQo+ID4gQEAgLTMwNiwy MiArMzA2LDM4IEBAIFNZU0NBTExfREVGSU5FMyhzMzkwX3BjaV9tbWlvX3JlYWQsIHVuc2lnbmVk IGxvbmcsIG1taW9fYWRkciwKPiA+ICAgICAgICAgICAgICAgYnVmID0gbG9jYWxfYnVmOwo+ID4g ICAgICAgfQo+ID4KPiA+IC0gICAgIHJldCA9IGdldF9wZm4obW1pb19hZGRyLCBWTV9SRUFELCAm cGZuKTsKPiA+ICsgICAgIG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtPm1tKTsKPiA+ICsgICAgIHJl dCA9IC1FSU5WQUw7Cj4gPiArICAgICB2bWEgPSBmaW5kX3ZtYShjdXJyZW50LT5tbSwgbW1pb19h ZGRyKTsKPiA+ICsgICAgIGlmICghdm1hKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxv Y2tfbW1hcDsKPiA+ICsgICAgIHJldCA9IC1FQUNDRVM7Cj4gPiArICAgICBpZiAoISh2bWEtPnZt X2ZsYWdzICYgVk1fV1JJVEUpKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2tfbW1h cDsKPiA+ICsgICAgIGlmICghKHZtYS0+dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSkK PiA+ICsgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrX21tYXA7Cj4KPiBTYW1lIGhlcmUgd2l0 aCBWTV9JTyB8IFZNX1BGTk1BUCBhbmQgLUVJTlZBTC4KCgoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg== 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=-9.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 B9AE7C2BD10 for ; Thu, 8 Oct 2020 17:16:35 +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 3F00B2222F for ; Thu, 8 Oct 2020 17:16:33 +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="MVbqu90h" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3F00B2222F 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 94B596EAB2; Thu, 8 Oct 2020 17:16:32 +0000 (UTC) Received: from mail-oi1-x241.google.com (mail-oi1-x241.google.com [IPv6:2607:f8b0:4864:20::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9CF6D6EAB3 for ; Thu, 8 Oct 2020 17:16:31 +0000 (UTC) Received: by mail-oi1-x241.google.com with SMTP id 26so7083550ois.5 for ; Thu, 08 Oct 2020 10:16:31 -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=cJwmJXmW0n/BmBUTL74IPviQIG2habiKD0MU6pN8zhU=; b=MVbqu90hJmyrd+sPPkFw6E75unJ8rLwKVenxZgPlZQ0sDsjzqGtKeUBv82TcScacos yekx36c3FkXtWDgWxhXXmugd3dPf2By3cV1JwiAspr3dL9gnVzSAVLnXNq7o/V7irYdI 7mZVqNu2dmuv8QMF1QlWFB/Rs/OIshbHRXrbM= 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=cJwmJXmW0n/BmBUTL74IPviQIG2habiKD0MU6pN8zhU=; b=ogAqsFp6uvpqUt1WWmPlCtPhRU/GYsZs80iy27xBQpXW8OfRgfJtgUVNcU5vesGg4e 0gdp5FJbxA1uBrf84C13wtu35sCn4hxWopsWjZqmWvt3vfZu/KT4IRer//qxpxTdb7pq Zj6+iS5bP2TaCovjQ0KYgmxjB0EWG2n7oDgD5iQ0MucrzJrb93DSe0l7Bc4acS55LGP0 vAiPJni2MbjkNZa0MwlMmLqed/nnRXTz+ikvhOfCPg0Ewu+ipTpVm8AAGhv8RRGkFxGi 14tCVAS/gQlDbznka8M23D36cImixlzvVVCBuEqjbI5raimK8zMDe3wCrgaN8jGstA9U osYg== X-Gm-Message-State: AOAM532rpFQPQrKr1yiMWcCEDbFxWFN8BTa4aAvfBw45rr8IpJjTBkLt WoK/SH8uFkocOpjQPufh6pl/m1I/Oy9KxX0aFL4LBQ== X-Google-Smtp-Source: ABdhPJzf3e2p0tuIJ1xApDWpklSlKGyjhh7bQmds7tEcm9rrUTBDyTXsYZhQ+pIZOdsswK//Z2G6wQ7JuLDsqNpcK5Y= X-Received: by 2002:a05:6808:206:: with SMTP id l6mr5847034oie.128.1602177390724; Thu, 08 Oct 2020 10:16:30 -0700 (PDT) MIME-Version: 1.0 References: <20201007164426.1812530-1-daniel.vetter@ffwll.ch> <20201007164426.1812530-9-daniel.vetter@ffwll.ch> <20201008184440.4c3bebed@thinkpad> In-Reply-To: <20201008184440.4c3bebed@thinkpad> From: Daniel Vetter Date: Thu, 8 Oct 2020 19:16:19 +0200 Message-ID: Subject: Re: [PATCH 08/13] s390/pci: Remove races against pte updates To: Gerald Schaefer 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 , linux-samsung-soc , Jan Kara , Kees Cook , KVM list , Jason Gunthorpe , John Hubbard , Niklas Schnelle , LKML , DRI Development , Linux MM , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Daniel Vetter , 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" T24gVGh1LCBPY3QgOCwgMjAyMCBhdCA2OjQ0IFBNIEdlcmFsZCBTY2hhZWZlcgo8Z2VyYWxkLnNj aGFlZmVyQGxpbnV4LmlibS5jb20+IHdyb3RlOgo+Cj4gT24gV2VkLCAgNyBPY3QgMjAyMCAxODo0 NDoyMSArMDIwMAo+IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+IHdyb3Rl Ogo+Cj4gPiBXYXkgYmFjayBpdCB3YXMgYSByZWFzb25hYmxlIGFzc3VtcHRpb25zIHRoYXQgaW9t ZW0gbWFwcGluZ3MgbmV2ZXIKPiA+IGNoYW5nZSB0aGUgcGZuIHJhbmdlIHRoZXkgcG9pbnQgYXQu IEJ1dCB0aGlzIGhhcyBjaGFuZ2VkOgo+ID4KPiA+IC0gZ3B1IGRyaXZlcnMgZHluYW1pY2FsbHkg bWFuYWdlIHRoZWlyIG1lbW9yeSBub3dhZGF5cywgaW52YWxpZGF0aW5nCj4gPiBwdGVzIHdpdGgg dW5tYXBfbWFwcGluZ19yYW5nZSB3aGVuIGJ1ZmZlcnMgZ2V0IG1vdmVkCj4gPgo+ID4gLSBjb250 aWd1b3VzIGRtYSBhbGxvY2F0aW9ucyBoYXZlIG1vdmVkIGZyb20gZGVkaWNhdGVkIGNhcnZldG91 dHMgdG8KPiA+IGNtYSByZWdpb25zLiBUaGlzIG1lYW5zIGlmIHdlIG1pc3MgdGhlIHVubWFwIHRo ZSBwZm4gbWlnaHQgY29udGFpbgo+ID4gcGFnZWNhY2hlIG9yIGFub24gbWVtb3J5ICh3ZWxsIGFu eXRoaW5nIGFsbG9jYXRlZCB3aXRoIEdGUF9NT1ZFQUJMRSkKPiA+Cj4gPiAtIGV2ZW4gL2Rldi9t ZW0gbm93IGludmFsaWRhdGVzIG1hcHBpbmdzIHdoZW4gdGhlIGtlcm5lbCByZXF1ZXN0cyB0aGF0 Cj4gPiBpb21lbSByZWdpb24gd2hlbiBDT05GSUdfSU9fU1RSSUNUX0RFVk1FTSBpcyBzZXQsIHNl ZSAzMjM0YWM2NjRhODcKPiA+ICgiL2Rldi9tZW06IFJldm9rZSBtYXBwaW5ncyB3aGVuIGEgZHJp dmVyIGNsYWltcyB0aGUgcmVnaW9uIikKPiA+Cj4gPiBBY2Nlc3NpbmcgcGZucyBvYnRhaW5lZCBm cm9tIHB0ZXMgd2l0aG91dCBob2xkaW5nIGFsbCB0aGUgbG9ja3MgaXMKPiA+IHRoZXJlZm9yZSBu byBsb25nZXIgYSBnb29kIGlkZWEuIEZpeCB0aGlzLgo+ID4KPiA+IFNpbmNlIHpwY2lfbWVtY3B5 X2Zyb218dG9pbyBzZWVtcyB0byBub3QgZG8gYW55dGhpbmcgbmVmYXJpb3VzIHdpdGgKPiA+IGxv Y2tzIHdlIGp1c3QgbmVlZCB0byBvcGVuIGNvZGUgZ2V0X3BmbiBhbmQgZm9sbG93X3BmbiBhbmQg bWFrZSBzdXJlCj4gPiB3ZSBkcm9wIHRoZSBsb2NrcyBvbmx5IGFmdGVyIHdlJ3ZlIGRvbmUuIFRo ZSB3cml0ZSBmdW5jdGlvbiBhbHNvIG5lZWRzCj4gPiB0aGUgY29weV9mcm9tX3VzZXIgbW92ZSwg c2luY2Ugd2UgY2FuJ3QgdGFrZSB1c2Vyc3BhY2UgZmF1bHRzIHdoaWxlCj4gPiBob2xkaW5nIHRo ZSBtbWFwIHNlbS4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGludGVsLmNvbT4KPiA+IENjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0B6aWVwZS5jYT4K PiA+IENjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KPiA+IENjOiBL ZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4KPiA+IENjOiBBbmRyZXcgTW9ydG9uIDxh a3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgo+ID4gQ2M6IEpvaG4gSHViYmFyZCA8amh1YmJhcmRA bnZpZGlhLmNvbT4KPiA+IENjOiBKw6lyw7RtZSBHbGlzc2UgPGpnbGlzc2VAcmVkaGF0LmNvbT4K PiA+IENjOiBKYW4gS2FyYSA8amFja0BzdXNlLmN6Pgo+ID4gQ2M6IERhbiBXaWxsaWFtcyA8ZGFu Lmoud2lsbGlhbXNAaW50ZWwuY29tPgo+ID4gQ2M6IGxpbnV4LW1tQGt2YWNrLm9yZwo+ID4gQ2M6 IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwo+ID4gQ2M6IGxpbnV4LXNhbXN1 bmctc29jQHZnZXIua2VybmVsLm9yZwo+ID4gQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y Zwo+ID4gQ2M6IE5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXguaWJtLmNvbT4KPiA+IENj OiBHZXJhbGQgU2NoYWVmZXIgPGdlcmFsZC5zY2hhZWZlckBsaW51eC5pYm0uY29tPgo+ID4gQ2M6 IGxpbnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCj4gPiAtLS0KPiA+ICBhcmNoL3MzOTAvcGNpL3Bj aV9tbWlvLmMgfCA5OCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4g PiAgMSBmaWxlIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQo+Cj4g TG9va3MgZ29vZCwgdGhhbmtzLiBBbHNvIHN1cnZpdmVkIHNvbWUgYmFzaWMgZnVuY3Rpb24gdGVz dC4gT25seSBzb21lCj4gbWlub3Igbml0cGljaywgc2VlIGJlbG93Lgo+Cj4gUmV2aWV3ZWQtYnk6 IEdlcmFsZCBTY2hhZWZlciA8Z2VyYWxkLnNjaGFlZmVyQGxpbnV4LmlibS5jb20+Cj4KPiA+Cj4g PiBkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL3BjaS9wY2lfbW1pby5jIGIvYXJjaC9zMzkwL3BjaS9w Y2lfbW1pby5jCj4gPiBpbmRleCA0MDFjZjY3MGEyNDMuLjRkMTk0Y2IwOTM3MiAxMDA2NDQKPiA+ IC0tLSBhL2FyY2gvczM5MC9wY2kvcGNpX21taW8uYwo+ID4gKysrIGIvYXJjaC9zMzkwL3BjaS9w Y2lfbW1pby5jCj4gPiBAQCAtMTE5LDMzICsxMTksMTUgQEAgc3RhdGljIGlubGluZSBpbnQgX19t ZW1jcHlfdG9pb19pbnVzZXIodm9pZCBfX2lvbWVtICpkc3QsCj4gPiAgICAgICByZXR1cm4gcmM7 Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgbG9uZyBnZXRfcGZuKHVuc2lnbmVkIGxvbmcgdXNlcl9h ZGRyLCB1bnNpZ25lZCBsb25nIGFjY2VzcywKPiA+IC0gICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgKnBmbikKPiA+IC17Cj4gPiAtICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsK PiA+IC0gICAgIGxvbmcgcmV0Owo+ID4gLQo+ID4gLSAgICAgbW1hcF9yZWFkX2xvY2soY3VycmVu dC0+bW0pOwo+ID4gLSAgICAgcmV0ID0gLUVJTlZBTDsKPiA+IC0gICAgIHZtYSA9IGZpbmRfdm1h KGN1cnJlbnQtPm1tLCB1c2VyX2FkZHIpOwo+ID4gLSAgICAgaWYgKCF2bWEpCj4gPiAtICAgICAg ICAgICAgIGdvdG8gb3V0Owo+ID4gLSAgICAgcmV0ID0gLUVBQ0NFUzsKPiA+IC0gICAgIGlmICgh KHZtYS0+dm1fZmxhZ3MgJiBhY2Nlc3MpKQo+ID4gLSAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ IC0gICAgIHJldCA9IGZvbGxvd19wZm4odm1hLCB1c2VyX2FkZHIsIHBmbik7Cj4gPiAtb3V0Ogo+ ID4gLSAgICAgbW1hcF9yZWFkX3VubG9jayhjdXJyZW50LT5tbSk7Cj4gPiAtICAgICByZXR1cm4g cmV0Owo+ID4gLX0KPiA+IC0KPiA+ICBTWVNDQUxMX0RFRklORTMoczM5MF9wY2lfbW1pb193cml0 ZSwgdW5zaWduZWQgbG9uZywgbW1pb19hZGRyLAo+ID4gICAgICAgICAgICAgICBjb25zdCB2b2lk IF9fdXNlciAqLCB1c2VyX2J1ZmZlciwgc2l6ZV90LCBsZW5ndGgpCj4gPiAgewo+ID4gICAgICAg dTggbG9jYWxfYnVmWzY0XTsKPiA+ICAgICAgIHZvaWQgX19pb21lbSAqaW9fYWRkcjsKPiA+ICAg ICAgIHZvaWQgKmJ1ZjsKPiA+IC0gICAgIHVuc2lnbmVkIGxvbmcgcGZuOwo+ID4gKyAgICAgc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7Cj4gPiArICAgICBwdGVfdCAqcHRlcDsKPiA+ICsgICAg IHNwaW5sb2NrX3QgKnB0bDsKPiA+ICAgICAgIGxvbmcgcmV0Owo+ID4KPiA+ICAgICAgIGlmICgh enBjaV9pc19lbmFibGVkKCkpCj4gPiBAQCAtMTU4LDcgKzE0MCw3IEBAIFNZU0NBTExfREVGSU5F MyhzMzkwX3BjaV9tbWlvX3dyaXRlLCB1bnNpZ25lZCBsb25nLCBtbWlvX2FkZHIsCj4gPiAgICAg ICAgKiBXZSBvbmx5IHN1cHBvcnQgd3JpdGUgYWNjZXNzIHRvIE1JTyBjYXBhYmxlIGRldmljZXMg aWYgd2UgYXJlIG9uCj4gPiAgICAgICAgKiBhIE1JTyBlbmFibGVkIHN5c3RlbS4gT3RoZXJ3aXNl IHdlIHdvdWxkIGhhdmUgdG8gY2hlY2sgZm9yIGV2ZXJ5Cj4gPiAgICAgICAgKiBhZGRyZXNzIGlm IGl0IGlzIGEgc3BlY2lhbCBaUENJX0FERFIgYW5kIHdvdWxkIGhhdmUgdG8gZG8KPiA+IC0gICAg ICAqIGEgZ2V0X3BmbigpIHdoaWNoIHdlIGRvbid0IG5lZWQgZm9yIE1JTyBjYXBhYmxlIGRldmlj ZXMuICBDdXJyZW50bHkKPiA+ICsgICAgICAqIGEgcGZuIGxvb2t1cCB3aGljaCB3ZSBkb24ndCBu ZWVkIGZvciBNSU8gY2FwYWJsZSBkZXZpY2VzLiAgQ3VycmVudGx5Cj4gPiAgICAgICAgKiBJU00g ZGV2aWNlcyBhcmUgdGhlIG9ubHkgZGV2aWNlcyB3aXRob3V0IE1JTyBzdXBwb3J0IGFuZCB0aGVy ZSBpcyBubwo+ID4gICAgICAgICoga25vd24gbmVlZCBmb3IgYWNjZXNzaW5nIHRoZXNlIGZyb20g dXNlcnNwYWNlLgo+ID4gICAgICAgICovCj4gPiBAQCAtMTc2LDIxICsxNTgsMzcgQEAgU1lTQ0FM TF9ERUZJTkUzKHMzOTBfcGNpX21taW9fd3JpdGUsIHVuc2lnbmVkIGxvbmcsIG1taW9fYWRkciwK PiA+ICAgICAgIH0gZWxzZQo+ID4gICAgICAgICAgICAgICBidWYgPSBsb2NhbF9idWY7Cj4gPgo+ ID4gLSAgICAgcmV0ID0gZ2V0X3BmbihtbWlvX2FkZHIsIFZNX1dSSVRFLCAmcGZuKTsKPiA+ICsg ICAgIHJldCA9IC1FRkFVTFQ7Cj4gPiArICAgICBpZiAoY29weV9mcm9tX3VzZXIoYnVmLCB1c2Vy X2J1ZmZlciwgbGVuZ3RoKSkKPiA+ICsgICAgICAgICAgICAgZ290byBvdXRfZnJlZTsKPiA+ICsK PiA+ICsgICAgIG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtPm1tKTsKPiA+ICsgICAgIHJldCA9IC1F SU5WQUw7Cj4gPiArICAgICB2bWEgPSBmaW5kX3ZtYShjdXJyZW50LT5tbSwgbW1pb19hZGRyKTsK PiA+ICsgICAgIGlmICghdm1hKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2tfbW1h cDsKPiA+ICsgICAgIHJldCA9IC1FQUNDRVM7Cj4gPiArICAgICBpZiAoISh2bWEtPnZtX2ZsYWdz ICYgVk1fV1JJVEUpKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2tfbW1hcDsKPiA+ ICsgICAgIGlmICghKHZtYS0+dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSkKPiA+ICsg ICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrX21tYXA7Cj4KPiBUaGF0IGNoZWNrIGZvciBWTV9J TyB8IFZNX1BGTk1BUCB3YXMgcHJldmlvdXNseSBoaWRkZW4gaW5zaWRlIGZvbGxvd19wZm4oKSwK PiBhbmQgdGhhdCB3b3VsZCBoYXZlIHJldHVybmVkIC1FSU5WQUwgaW4gdGhpcyBjYXNlLiBXaXRo IHlvdXIgY2hhbmdlLCB3ZQo+IG5vdyByZXR1cm4gLUVBQ0NFUy4gTm90IHN1cmUgaG93IGltcG9y dGFudCB0aGF0IGlzLCBidXQgaXQgZmVlbHMgd3JvbmcuCj4gTWF5YmUgbW92ZSB0aGUgVk1fSU8g fCBWTV9QRk5NQVAgY2hlY2sgdXAsIGJlZm9yZSB0aGUgcmV0ID0gLUVBQ0NFUz8KCkkgdHJpZWQg dG8ga2VlcCB0aGUgZXJybm8gdW5jaGFuZ2VkLCBidXQgZnVtYmxlZCB0aGlzLiBXaWxsIGZpeCBp biB0aGUKbmV4dCByb3VuZCwgdGhhbmtzIGEgbG90IGZvciByZXZpZXdpbmcgYW5kIHRlc3Rpbmcu CgpGb3IgbWVyZ2luZyBJIHRoaW5rIHRoaXMgb25lIGhlcmUgd291bGQgYmUgYmVzdCB0aHJvdWdo IHRoZSBzMzkwIHRyZWUsCnNpbmNlIGl0IGNhbiBiZSBtZXJnZWQgd2l0aG91dCBhbnkgb2YgdGhl IG90aGVycyBpbiBoZXJlLgoKVGhhbmtzLCBEYW5pZWwKCj4KPiBbLi4uXQo+ID4gQEAgLTMwNiwy MiArMzA2LDM4IEBAIFNZU0NBTExfREVGSU5FMyhzMzkwX3BjaV9tbWlvX3JlYWQsIHVuc2lnbmVk IGxvbmcsIG1taW9fYWRkciwKPiA+ICAgICAgICAgICAgICAgYnVmID0gbG9jYWxfYnVmOwo+ID4g ICAgICAgfQo+ID4KPiA+IC0gICAgIHJldCA9IGdldF9wZm4obW1pb19hZGRyLCBWTV9SRUFELCAm cGZuKTsKPiA+ICsgICAgIG1tYXBfcmVhZF9sb2NrKGN1cnJlbnQtPm1tKTsKPiA+ICsgICAgIHJl dCA9IC1FSU5WQUw7Cj4gPiArICAgICB2bWEgPSBmaW5kX3ZtYShjdXJyZW50LT5tbSwgbW1pb19h ZGRyKTsKPiA+ICsgICAgIGlmICghdm1hKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxv Y2tfbW1hcDsKPiA+ICsgICAgIHJldCA9IC1FQUNDRVM7Cj4gPiArICAgICBpZiAoISh2bWEtPnZt X2ZsYWdzICYgVk1fV1JJVEUpKQo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2tfbW1h cDsKPiA+ICsgICAgIGlmICghKHZtYS0+dm1fZmxhZ3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSkK PiA+ICsgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrX21tYXA7Cj4KPiBTYW1lIGhlcmUgd2l0 aCBWTV9JTyB8IFZNX1BGTk1BUCBhbmQgLUVJTlZBTC4KCgoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=