From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0CC6548489C; Wed, 23 Sep 2026 15:47:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790178435; cv=none; b=e0TIoXEqh/bG7lZFlG5KiumHiuJpgL+2SgR0xcL96l850MAu/7CsJEL1aiVl1eYN/xrZHQDGyS4dyfk25lWMqbgNlJHXBSHageLX7Y2yZWAz41LM1nyXS7gKxe5FMrBPYlVehgovcR1+Z3h7iFua1XoL+7Q5RJIIX4E5WxgLrBo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790178435; c=relaxed/simple; bh=UvOU6NVW237Gm3Kd0Qd+t98ND3X09fOMouebxL1fss4=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=bA6+HQ3geM2YS03utNIhaBiuQBnRMWY5G2PL7GdGn7MX26gBa3cSJEluDwdm55NDGxAeZm2b8851acH/qXeMPQboifM9zsM3TPIz1Tfudde4dFtHlEx9TjhWQvziqOEf/wP9hEBWandewrp/IyYBZ7Clw2iBKVK8uXw044cIubE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EIHX04oS; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EIHX04oS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D111F000FF; Wed, 23 Sep 2026 15:46:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790178432; bh=A9s/BYxYsxmIUd2ggYhNRz11koMa/mZl2NbZ9+ZbYI0=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=EIHX04oSQJKo94mpzbyGnEQxAzsufArn9Dgt95ktpFqZxe3xWv1YBsUqm4+kBAxgj YeOd6h9VANMyGKxodACmnSQBggFcVeQbaJ6XzAdB/bMrK3a3z5fSbzkL06oPNtVpyP 0iVeTcZz27Uq19vg805MtbGVQ4RDGmUIxJJSL1Q7OMXjYvaYd0CaySGe6R8SOzrTAa cncsHzspiOHvV3P4rHKhkz2AWVSpblm5cxABgQxwx+6lz5bCwafz575cehiQrKU3OE uoQkvgmHT8i4rSjwR86iyvQJTrpmbdAQsVmSOE7LaE1elZPlB9KagahIZQFEo9o+hm X17tS4JRWuhBQ== Date: Wed, 23 Sep 2026 16:46:42 +0100 From: "Lorenzo Stoakes (ARM)" To: Suren Baghdasaryan Cc: Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , David Hildenbrand , Mike Rapoport , Michal Hocko , Jonathan Corbet , Greg Kroah-Hartman , Dennis Dalessandro , Jason Gunthorpe , Leon Romanovsky , Paul Moore , Stephen Smalley , Jaroslav Kysela , Takashi Iwai , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Usama Arif , Kiryl Shutsemau , Doug Gilbert , "James E.J. Bottomley" , "Martin K. Petersen" , Jaya Kumar , Simona Vetter , Helge Deller , Sebastian Reichel , John Hubbard , Peter Xu , Masami Hiramatsu , Oleg Nesterov , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Rik van Riel , Harry Yoo , Juri Lelli , Vincent Guittot , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Will Deacon , "Aneesh Kumar K.V" , Nick Piggin , Arnd Bergmann , Muchun Song , Oscar Salvador , "Matthew Wilcox (Oracle)" , Jan Kara , Marc Zyngier , Oliver Upton , Catalin Marinas , Madhavan Srinivasan , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , "David S. Miller" , Andreas Larsson , Alexander Viro , Christian Brauner , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Baoquan He , Youngjun Park , Johannes Weiner , Qi Zheng , Shakeel Butt , Axel Rasmussen , Yuanchu Xie , Wei Xu , Chengming Zhou , Michal Hocko , Miklos Szeredi , Xu Xin , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-usb@vger.kernel.org, linux-rdma@vger.kernel.org, selinux@vger.kernel.org, linux-sound@vger.kernel.org, bpf@vger.kernel.org, linux-scsi@vger.kernel.org, linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arch@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, fuse-devel@lists.linux.dev Subject: Re: [PATCH v3 01/40] mm/vma: fix mmap_prepare file handling, remove file_doesnt_need_get Message-ID: References: <20260917-b4-mmap-prepare-vma-flag-sanify-v3-0-4583d8a23bca@kernel.org> <20260917-b4-mmap-prepare-vma-flag-sanify-v3-1-4583d8a23bca@kernel.org> Precedence: bulk X-Mailing-List: fuse-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Wed, Sep 23, 2026 at 08:21:58AM -0700, Suren Baghdasaryan wrote: > On Thu, Sep 17, 2026 at 9:23 AM Lorenzo Stoakes (ARM) wrote: > > > > The map->file_doesnt_need_get flag is confusing and the existing > > implementation has holes. > > > > Drivers are permitted to change the owning file of a mapping. If they do > > so, they are required to take a reference on that file. > > > > The mmap() operation which ultimately invokes __mmap_region() is guaranteed > > to drop the refcount for the original file the mapping was made under, but > > this is not true for the replaced file. > > > > This has been addressed so far by tracking map->file_doesnt_need_get, which > > is rather poorly named and unfortunately fails to correctly track whether > > or not an additional put were needed in a number of cases. > > > > Make life easier by removing this flag, and instead drop the reference for > > both mmap_prepare and the deprecated mmap callback in a new function > > put_map(). > > > > Track whether this needs to be done by aligning mmap_state with > > vm_area_desc and store the original file in the map->file field, keeping > > the updated file in map->vm_file. > > > > In order to have the same behaviour for both types of hooks, only drop the > > reference __mmap_new_file_vma() itself took in its error path, deferring > > the replaced file's reference to put_map(). > > > > To make this work correctly, map->vm_file has to be updated before any > > error handling, so update __mmap_new_file_vma() and call_mmap_prepare() to > > set this field first. > > > > Also when mmap_prepare() changes the file and is then merged, the reference > > count also must be decremented, so update the logic to call put_map() in > > this case too. > > > > Also update __compat_vma_mmap() to manually perform this step for stacked > > file systems using the compatibility layer, and update > > compat_set_vma_from_desc() to replace vma_set_file() with a correct > > refcount/file update. > > > > No in-tree driver is impacted by the incorrect implementation of this > > currently (no driver that does this is mergeable for one), so this does not > > need to be a fix. > > > > Signed-off-by: Lorenzo Stoakes (ARM) > > --- > > mm/internal.h | 1 + > > mm/util.c | 5 +++- > > mm/vma.c | 83 +++++++++++++++++++++++++++++++++++------------------------ > > mm/vma.h | 6 +++-- > > 4 files changed, 59 insertions(+), 36 deletions(-) > > > > diff --git a/mm/internal.h b/mm/internal.h > > index 0dca33db068f..fe576d468af4 100644 > > --- a/mm/internal.h > > +++ b/mm/internal.h > > @@ -7,6 +7,7 @@ > > #ifndef __MM_INTERNAL_H > > #define __MM_INTERNAL_H > > > > +#include > > #include > > #include > > #include > > diff --git a/mm/util.c b/mm/util.c > > index bf0513d1d3d0..016932780925 100644 > > --- a/mm/util.c > > +++ b/mm/util.c > > @@ -1228,8 +1228,11 @@ int __compat_vma_mmap(struct vm_area_desc *desc, > > > > /* Perform any preparatory tasks for mmap action. */ > > err = mmap_action_prepare(desc); > > - if (err) > > + if (err) { > > + if (desc->vm_file != vma->vm_file) > > + fput(desc->vm_file); > > return err; > > + } > > /* Update the VMA from the descriptor. */ > > compat_set_vma_from_desc(vma, desc); > > /* Complete any specified mmap actions. */ > > diff --git a/mm/vma.c b/mm/vma.c > > index 55917d097933..fa784f069da4 100644 > > --- a/mm/vma.c > > +++ b/mm/vma.c > > @@ -24,7 +24,8 @@ struct mmap_state { > > vm_flags_t vm_flags; > > vma_flags_t vma_flags; > > }; > > - struct file *file; > > + struct file *file; /* mmap()-specified file. */ > > + struct file *vm_file; /* May be updated by mmap_prepare. */ > > Overall I like the change but I think you could avoid extra churn by > keeping the name of `file` as is and add `struct file *orig_file` > instead as: > > + struct file *orig_file; /* mmap()-specified original file. */ > - struct file *file; > + struct file *file; /* May be updated by mmap_prepare. */ > > Then many uses of map->file would stay unchanged. I didn't actually want to do the churny version of this but the problem with doing something else is that would then contradicts what's in vm_area_desc: struct vm_area_desc { /* Immutable state. */ ... struct file *file; /* May vary from vm_file in stacked callers. */ ... /* Mutable fields. Populated with initial state. */ ... struct file *vm_file; ... }; And suddenly what is 'file' there (inherited file) is the modifiable one here and it's more confusing. As per the commit msg: Track whether this needs to be done by aligning mmap_state with vm_area_desc and store the original file in the map->file field, keeping the updated file in map->vm_file. But maybe I need to make that decision clearer there? > > > pgprot_t page_prot; > > > > /* User-defined fields, perhaps updated by .mmap_prepare(). */ > > @@ -43,8 +44,6 @@ struct mmap_state { > > > > /* Determine if we can check KSM flags early in mmap() logic. */ > > bool check_ksm_early :1; > > - /* If .mmap_prepare changed the file, we don't need to pin. */ > > - bool file_doesnt_need_get :1; > > }; > > > > #define MMAP_STATE(name, mm_, vmi_, addr_, len_, pgoff_, anon_pgoff_, vma_flags_, file_) \ > > @@ -58,6 +57,7 @@ struct mmap_state { > > .pglen = PHYS_PFN(len_), \ > > .vma_flags = vma_flags_, \ > > .file = file_, \ > > + .vm_file = file_, \ > > .page_prot = vma_flags_to_page_prot(vma_flags_), \ > > } > > > > @@ -70,7 +70,7 @@ struct mmap_state { > > .vma_flags = (map_)->vma_flags, \ > > .pgoff = (map_)->pgoff, \ > > .anon_pgoff = (map_)->anon_pgoff, \ > > - .file = (map_)->file, \ > > + .file = (map_)->vm_file, \ > > .prev = (map_)->prev, \ > > .middle = vma_, \ > > .next = (vma_) ? NULL : (map_)->next, \ > > @@ -2447,7 +2447,7 @@ void mm_drop_all_locks(struct mm_struct *mm) > > */ > > static bool accountable_mapping(struct mmap_state *map) > > { > > - const struct file *file = map->file; > > + const struct file *file = map->vm_file; > > > > /* > > * hugetlb has its own accounting separate from the core VM > > @@ -2496,7 +2496,7 @@ static void vms_abort_munmap_vmas(struct vma_munmap_struct *vms, > > > > static void update_ksm_flags(struct mmap_state *map) > > { > > - map->vma_flags = ksm_vma_flags(map->mm, map->file, map->vma_flags); > > + map->vma_flags = ksm_vma_flags(map->mm, map->vm_file, map->vma_flags); > > } > > > > static void set_desc_from_map(struct vm_area_desc *desc, > > @@ -2506,7 +2506,7 @@ static void set_desc_from_map(struct vm_area_desc *desc, > > desc->end = map->end; > > > > desc->pgoff = map->pgoff; > > - desc->vm_file = map->file; > > + desc->vm_file = map->vm_file; > > desc->vma_flags = map->vma_flags; > > desc->page_prot = map->page_prot; > > } > > @@ -2586,6 +2586,10 @@ static int __mmap_setup(struct mmap_state *map, struct vm_area_desc *desc, > > return 0; > > } > > > > +static bool map_same_file(struct mmap_state *map) > > +{ > > + return map->vm_file == map->file; > > +} > > > > static int __mmap_new_file_vma(struct mmap_state *map, > > struct vm_area_struct *vma) > > @@ -2593,20 +2597,23 @@ static int __mmap_new_file_vma(struct mmap_state *map, > > struct vma_iterator *vmi = map->vmi; > > int error; > > > > - vma->vm_file = map->file; > > - if (!map->file_doesnt_need_get) > > - get_file(map->file); > > + vma->vm_file = map->vm_file; > > + if (map_same_file(map)) > > + get_file(map->vm_file); > > > > - if (!map->file->f_op->mmap) > > + if (!map->vm_file->f_op->mmap) > > return 0; > > > > error = mmap_file(vma->vm_file, vma); > > + map->vm_file = vma->vm_file; > > + > > if (error) { > > UNMAP_STATE(unmap, vmi, vma, vma->vm_start, vma->vm_end, > > map->prev, map->next); > > - fput(vma->vm_file); > > - vma->vm_file = NULL; > > + if (map_same_file(map)) > > + fput(map->vm_file); > > > > + vma->vm_file = NULL; > > vma_iter_set(vmi, vma->vm_end); > > /* Undo any partial mapping done by a device driver. */ > > unmap_region(&unmap); > > @@ -2623,7 +2630,6 @@ static int __mmap_new_file_vma(struct mmap_state *map, > > !vma_flags_test(&map->vma_flags, VMA_MAYWRITE_BIT) && > > vma_test(vma, VMA_MAYWRITE_BIT)); > > > > - map->file = vma->vm_file; > > map->vma_flags = vma->flags; > > > > return 0; > > @@ -2631,7 +2637,7 @@ static int __mmap_new_file_vma(struct mmap_state *map, > > > > static void map_set_anon(struct mmap_state *map) > > { > > - map->file = NULL; > > + map->vm_file = NULL; > > map->vm_ops = NULL; > > map->pgoff = map->addr >> PAGE_SHIFT; > > } > > @@ -2643,7 +2649,7 @@ static bool map_is_private(const struct mmap_state *map) > > > > static bool map_is_anon(const struct mmap_state *map) > > { > > - return map_is_private(map) && !map->file; > > + return map_is_private(map) && !map->vm_file; > > } > > > > /* > > @@ -2688,7 +2694,7 @@ static int __mmap_new_vma(struct mmap_state *map, struct vm_area_struct **vmap, > > } > > > > /* Invoke callbacks. */ > > - if (map->file) > > + if (map->vm_file) > > error = __mmap_new_file_vma(map, vma); > > else if (!is_anon) > > error = shmem_zero_setup(vma); > > @@ -2797,11 +2803,15 @@ static int call_mmap_prepare(struct mmap_state *map, > > int err; > > > > /* Invoke the hook. */ > > - err = vfs_mmap_prepare(map->file, desc); > > + err = vfs_mmap_prepare(map->vm_file, desc); > > if (err) > > return err; > > > > - /* It's invalid for mmap_preprare hooks to clear vm_ops. */ > > + /* Update first so file refcount tracked correctly. */ > > + if (desc->vm_file != map->vm_file) > > + map->vm_file = desc->vm_file; > > + > > + /* It's invalid for mmap_prepare hooks to clear vm_ops. */ > > if (!desc->vm_ops) > > return -EINVAL; > > > > @@ -2811,10 +2821,6 @@ static int call_mmap_prepare(struct mmap_state *map, > > > > /* Update fields permitted to be changed. */ > > map->pgoff = desc->pgoff; > > - if (desc->vm_file != map->file) { > > - map->file_doesnt_need_get = true; > > - map->file = desc->vm_file; > > - } > > map->vma_flags = desc->vma_flags; > > map->page_prot = desc->page_prot; > > /* User-defined fields. */ > > @@ -2826,7 +2832,7 @@ static int call_mmap_prepare(struct mmap_state *map, > > * anonymous mappings. Rather than allowing these mappings to be odd > > * outliers, simply make them truly anonymous. > > */ > > - if (map_is_private(map) && file_is_dev_zero(map->file)) > > + if (map_is_private(map) && file_is_dev_zero(map->vm_file)) > > map_set_anon(map); > > > > return 0; > > @@ -2845,7 +2851,7 @@ static void set_vma_user_defined_fields(struct vm_area_struct *vma, > > */ > > static bool can_set_ksm_flags_early(struct mmap_state *map) > > { > > - struct file *file = map->file; > > + struct file *file = map->vm_file; > > > > /* Anonymous mappings have no driver which can change them. */ > > if (!file) > > @@ -2868,6 +2874,20 @@ static bool can_set_ksm_flags_early(struct mmap_state *map) > > return false; > > } > > > > +static void put_map(struct mmap_state *map) > > nit: maybe put_map_file() to be more specific? Sure will change. > > > +{ > > + /* > > + * An error occurred or the VMA was merged. > > It's a bit weird that the function explains when it is being used. > Having an appropriate comment at the call site seems better to me. Ack will change. > > > + * > > + * If the file was changed by the driver (which is required to increment > > + * the replacement file's reference count), drop its reference count. > > + * > > + * On error, the caller always drops the original file regardless. > > + */ > > + if (map->vm_file && !map_same_file(map)) > > + fput(map->vm_file); > > +} > > + > > static unsigned long __mmap_region(struct file *file, unsigned long addr, > > unsigned long len, vma_flags_t vma_flags, > > unsigned long pgoff, struct list_head *uf) > > @@ -2922,7 +2942,10 @@ static unsigned long __mmap_region(struct file *file, unsigned long addr, > > > > __mmap_complete(&map, vma); > > > > - if (have_mmap_prepare && allocated_new) { > > + if (!allocated_new) { > > + /* Merged, so need to drop refcount. */ > > + put_map(&map); > > + } else if (have_mmap_prepare) { > > error = mmap_action_complete(vma, &desc.action, > > /*is_compat=*/false); > > if (error) > > @@ -2936,13 +2959,7 @@ static unsigned long __mmap_region(struct file *file, unsigned long addr, > > if (map.charged) > > vm_unacct_memory(map.charged); > > abort_munmap: > > - /* > > - * This indicates that .mmap_prepare has set a new file, differing from > > - * desc->vm_file. But since we're aborting the operation, only the > > - * original file will be cleaned up. Ensure we clean up both. > > - */ > > - if (map.file_doesnt_need_get) > > - fput(map.file); > > + put_map(&map); > > vms_abort_munmap_vmas(&map.vms, &map.mas_detach); > > return error; > > } > > diff --git a/mm/vma.h b/mm/vma.h > > index e97bd2dfa786..f15faa83f3d6 100644 > > --- a/mm/vma.h > > +++ b/mm/vma.h > > @@ -394,8 +394,10 @@ static inline void compat_set_vma_from_desc(struct vm_area_struct *vma, > > > > /* Mutable fields. Populated with initial state. */ > > vma_set_pgoff(vma, desc->pgoff); > > - if (desc->vm_file != vma->vm_file) > > - vma_set_file(vma, desc->vm_file); > > + if (desc->vm_file != vma->vm_file) { > > + fput(vma->vm_file); > > + vma->vm_file = desc->vm_file; > > + } > > vma->flags = desc->vma_flags; > > vma->vm_page_prot = desc->page_prot; > > > > > > -- > > 2.55.0 > > -- Cheers, Lorenzo 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A5946C98304 for ; Wed, 23 Sep 2026 15:47:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gqUkxX6jqeeKX1ol2FaF+WZisrz69EoNEQRsvgAlapU=; b=iNod4PxfC+y+H4 kN7PFXU5xqdf0DxHYL1w5wCEiggy9gytz/2OBmVxnYL1snuVxZNGVSB3rTusAHQTsslMA3wVLCdt3 Npm4fk1sDRWPQm3K3Q24PzOhuKE7Ev91YdlI5VkbI9zxZIo6q2c5RZEUX+zhwPmpANTVyGf0bXtvc c1PlWfks0bubnjWyAD0r8kSfAK7PVJTgs4d2v4y8q+/rLFRLHU26d8BmOcbevdX6Itw7bXmDmIfN2 LYzToPQndZS5EuNyL1aNkwncmmIWLMvJWG81EjoNl4l42TkoRIBEkodj8ddH2XEuAhVOPzbmbaKdU 7iP8ZQ+8eUX+U/wpo1Wg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x9PBi-00000008na5-0tsS; Wed, 23 Sep 2026 15:47:14 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x9PBh-00000008nZs-1MHP; Wed, 23 Sep 2026 15:47:13 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 07CE14353E; Wed, 23 Sep 2026 15:47:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D111F000FF; Wed, 23 Sep 2026 15:46:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790178432; bh=A9s/BYxYsxmIUd2ggYhNRz11koMa/mZl2NbZ9+ZbYI0=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=EIHX04oSQJKo94mpzbyGnEQxAzsufArn9Dgt95ktpFqZxe3xWv1YBsUqm4+kBAxgj YeOd6h9VANMyGKxodACmnSQBggFcVeQbaJ6XzAdB/bMrK3a3z5fSbzkL06oPNtVpyP 0iVeTcZz27Uq19vg805MtbGVQ4RDGmUIxJJSL1Q7OMXjYvaYd0CaySGe6R8SOzrTAa cncsHzspiOHvV3P4rHKhkz2AWVSpblm5cxABgQxwx+6lz5bCwafz575cehiQrKU3OE uoQkvgmHT8i4rSjwR86iyvQJTrpmbdAQsVmSOE7LaE1elZPlB9KagahIZQFEo9o+hm X17tS4JRWuhBQ== Date: Wed, 23 Sep 2026 16:46:42 +0100 From: "Lorenzo Stoakes (ARM)" To: Suren Baghdasaryan Cc: Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , David Hildenbrand , Mike Rapoport , Michal Hocko , Jonathan Corbet , Greg Kroah-Hartman , Dennis Dalessandro , Jason Gunthorpe , Leon Romanovsky , Paul Moore , Stephen Smalley , Jaroslav Kysela , Takashi Iwai , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Usama Arif , Kiryl Shutsemau , Doug Gilbert , "James E.J. Bottomley" , "Martin K. Petersen" , Jaya Kumar , Simona Vetter , Helge Deller , Sebastian Reichel , John Hubbard , Peter Xu , Masami Hiramatsu , Oleg Nesterov , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Rik van Riel , Harry Yoo , Juri Lelli , Vincent Guittot , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Will Deacon , "Aneesh Kumar K.V" , Nick Piggin , Arnd Bergmann , Muchun Song , Oscar Salvador , "Matthew Wilcox (Oracle)" , Jan Kara , Marc Zyngier , Oliver Upton , Catalin Marinas , Madhavan Srinivasan , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , "David S. Miller" , Andreas Larsson , Alexander Viro , Christian Brauner , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Baoquan He , Youngjun Park , Johannes Weiner , Qi Zheng , Shakeel Butt , Axel Rasmussen , Yuanchu Xie , Wei Xu , Chengming Zhou , Michal Hocko , Miklos Szeredi , Xu Xin , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-usb@vger.kernel.org, linux-rdma@vger.kernel.org, selinux@vger.kernel.org, linux-sound@vger.kernel.org, bpf@vger.kernel.org, linux-scsi@vger.kernel.org, linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arch@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, fuse-devel@lists.linux.dev Subject: Re: [PATCH v3 01/40] mm/vma: fix mmap_prepare file handling, remove file_doesnt_need_get Message-ID: References: <20260917-b4-mmap-prepare-vma-flag-sanify-v3-0-4583d8a23bca@kernel.org> <20260917-b4-mmap-prepare-vma-flag-sanify-v3-1-4583d8a23bca@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-BeenThere: kvm-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kvm-riscv" Errors-To: kvm-riscv-bounces+kvm-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBTZXAgMjMsIDIwMjYgYXQgMDg6MjE6NThBTSAtMDcwMCwgU3VyZW4gQmFnaGRhc2Fy eWFuIHdyb3RlOgo+IE9uIFRodSwgU2VwIDE3LCAyMDI2IGF0IDk6MjPigK9BTSBMb3JlbnpvIFN0 b2FrZXMgKEFSTSkgPGxqc0BrZXJuZWwub3JnPiB3cm90ZToKPiA+Cj4gPiBUaGUgbWFwLT5maWxl X2RvZXNudF9uZWVkX2dldCBmbGFnIGlzIGNvbmZ1c2luZyBhbmQgdGhlIGV4aXN0aW5nCj4gPiBp bXBsZW1lbnRhdGlvbiBoYXMgaG9sZXMuCj4gPgo+ID4gRHJpdmVycyBhcmUgcGVybWl0dGVkIHRv IGNoYW5nZSB0aGUgb3duaW5nIGZpbGUgb2YgYSBtYXBwaW5nLiBJZiB0aGV5IGRvCj4gPiBzbywg dGhleSBhcmUgcmVxdWlyZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSBvbiB0aGF0IGZpbGUuCj4gPgo+ ID4gVGhlIG1tYXAoKSBvcGVyYXRpb24gd2hpY2ggdWx0aW1hdGVseSBpbnZva2VzIF9fbW1hcF9y ZWdpb24oKSBpcyBndWFyYW50ZWVkCj4gPiB0byBkcm9wIHRoZSByZWZjb3VudCBmb3IgdGhlIG9y aWdpbmFsIGZpbGUgdGhlIG1hcHBpbmcgd2FzIG1hZGUgdW5kZXIsIGJ1dAo+ID4gdGhpcyBpcyBu b3QgdHJ1ZSBmb3IgdGhlIHJlcGxhY2VkIGZpbGUuCj4gPgo+ID4gVGhpcyBoYXMgYmVlbiBhZGRy ZXNzZWQgc28gZmFyIGJ5IHRyYWNraW5nIG1hcC0+ZmlsZV9kb2VzbnRfbmVlZF9nZXQsIHdoaWNo Cj4gPiBpcyByYXRoZXIgcG9vcmx5IG5hbWVkIGFuZCB1bmZvcnR1bmF0ZWx5IGZhaWxzIHRvIGNv cnJlY3RseSB0cmFjayB3aGV0aGVyCj4gPiBvciBub3QgYW4gYWRkaXRpb25hbCBwdXQgd2VyZSBu ZWVkZWQgaW4gYSBudW1iZXIgb2YgY2FzZXMuCj4gPgo+ID4gTWFrZSBsaWZlIGVhc2llciBieSBy ZW1vdmluZyB0aGlzIGZsYWcsIGFuZCBpbnN0ZWFkIGRyb3AgdGhlIHJlZmVyZW5jZSBmb3IKPiA+ IGJvdGggbW1hcF9wcmVwYXJlIGFuZCB0aGUgZGVwcmVjYXRlZCBtbWFwIGNhbGxiYWNrIGluIGEg bmV3IGZ1bmN0aW9uCj4gPiBwdXRfbWFwKCkuCj4gPgo+ID4gVHJhY2sgd2hldGhlciB0aGlzIG5l ZWRzIHRvIGJlIGRvbmUgYnkgYWxpZ25pbmcgbW1hcF9zdGF0ZSB3aXRoCj4gPiB2bV9hcmVhX2Rl c2MgYW5kIHN0b3JlIHRoZSBvcmlnaW5hbCBmaWxlIGluIHRoZSBtYXAtPmZpbGUgZmllbGQsIGtl ZXBpbmcKPiA+IHRoZSB1cGRhdGVkIGZpbGUgaW4gbWFwLT52bV9maWxlLgo+ID4KPiA+IEluIG9y ZGVyIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIGZvciBib3RoIHR5cGVzIG9mIGhvb2tzLCBv bmx5IGRyb3AgdGhlCj4gPiByZWZlcmVuY2UgX19tbWFwX25ld19maWxlX3ZtYSgpIGl0c2VsZiB0 b29rIGluIGl0cyBlcnJvciBwYXRoLCBkZWZlcnJpbmcKPiA+IHRoZSByZXBsYWNlZCBmaWxlJ3Mg cmVmZXJlbmNlIHRvIHB1dF9tYXAoKS4KPiA+Cj4gPiBUbyBtYWtlIHRoaXMgd29yayBjb3JyZWN0 bHksIG1hcC0+dm1fZmlsZSBoYXMgdG8gYmUgdXBkYXRlZCBiZWZvcmUgYW55Cj4gPiBlcnJvciBo YW5kbGluZywgc28gdXBkYXRlIF9fbW1hcF9uZXdfZmlsZV92bWEoKSBhbmQgY2FsbF9tbWFwX3By ZXBhcmUoKSB0bwo+ID4gc2V0IHRoaXMgZmllbGQgZmlyc3QuCj4gPgo+ID4gQWxzbyB3aGVuIG1t YXBfcHJlcGFyZSgpIGNoYW5nZXMgdGhlIGZpbGUgYW5kIGlzIHRoZW4gbWVyZ2VkLCB0aGUgcmVm ZXJlbmNlCj4gPiBjb3VudCBhbHNvIG11c3QgYmUgZGVjcmVtZW50ZWQsIHNvIHVwZGF0ZSB0aGUg bG9naWMgdG8gY2FsbCBwdXRfbWFwKCkgaW4KPiA+IHRoaXMgY2FzZSB0b28uCj4gPgo+ID4gQWxz byB1cGRhdGUgX19jb21wYXRfdm1hX21tYXAoKSB0byBtYW51YWxseSBwZXJmb3JtIHRoaXMgc3Rl cCBmb3Igc3RhY2tlZAo+ID4gZmlsZSBzeXN0ZW1zIHVzaW5nIHRoZSBjb21wYXRpYmlsaXR5IGxh eWVyLCBhbmQgdXBkYXRlCj4gPiBjb21wYXRfc2V0X3ZtYV9mcm9tX2Rlc2MoKSB0byByZXBsYWNl IHZtYV9zZXRfZmlsZSgpIHdpdGggYSBjb3JyZWN0Cj4gPiByZWZjb3VudC9maWxlIHVwZGF0ZS4K PiA+Cj4gPiBObyBpbi10cmVlIGRyaXZlciBpcyBpbXBhY3RlZCBieSB0aGUgaW5jb3JyZWN0IGlt cGxlbWVudGF0aW9uIG9mIHRoaXMKPiA+IGN1cnJlbnRseSAobm8gZHJpdmVyIHRoYXQgZG9lcyB0 aGlzIGlzIG1lcmdlYWJsZSBmb3Igb25lKSwgc28gdGhpcyBkb2VzIG5vdAo+ID4gbmVlZCB0byBi ZSBhIGZpeC4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBMb3JlbnpvIFN0b2FrZXMgKEFSTSkgPGxq c0BrZXJuZWwub3JnPgo+ID4gLS0tCj4gPiAgbW0vaW50ZXJuYWwuaCB8ICAxICsKPiA+ICBtbS91 dGlsLmMgICAgIHwgIDUgKysrLQo+ID4gIG1tL3ZtYS5jICAgICAgfCA4MyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIG1tL3Zt YS5oICAgICAgfCAgNiArKystLQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygr KSwgMzYgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL21tL2ludGVybmFsLmggYi9t bS9pbnRlcm5hbC5oCj4gPiBpbmRleCAwZGNhMzNkYjA2OGYuLmZlNTc2ZDQ2OGFmNCAxMDA2NDQK PiA+IC0tLSBhL21tL2ludGVybmFsLmgKPiA+ICsrKyBiL21tL2ludGVybmFsLmgKPiA+IEBAIC03 LDYgKzcsNyBAQAo+ID4gICNpZm5kZWYgX19NTV9JTlRFUk5BTF9ICj4gPiAgI2RlZmluZSBfX01N X0lOVEVSTkFMX0gKPiA+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KPiA+ICAjaW5jbHVk ZSA8bGludXgvZnMuaD4KPiA+ICAjaW5jbHVkZSA8bGludXgva2h1Z2VwYWdlZC5oPgo+ID4gICNp bmNsdWRlIDxsaW51eC9tbS5oPgo+ID4gZGlmZiAtLWdpdCBhL21tL3V0aWwuYyBiL21tL3V0aWwu Ywo+ID4gaW5kZXggYmYwNTEzZDFkM2QwLi4wMTY5MzI3ODA5MjUgMTAwNjQ0Cj4gPiAtLS0gYS9t bS91dGlsLmMKPiA+ICsrKyBiL21tL3V0aWwuYwo+ID4gQEAgLTEyMjgsOCArMTIyOCwxMSBAQCBp bnQgX19jb21wYXRfdm1hX21tYXAoc3RydWN0IHZtX2FyZWFfZGVzYyAqZGVzYywKPiA+Cj4gPiAg ICAgICAgIC8qIFBlcmZvcm0gYW55IHByZXBhcmF0b3J5IHRhc2tzIGZvciBtbWFwIGFjdGlvbi4g Ki8KPiA+ICAgICAgICAgZXJyID0gbW1hcF9hY3Rpb25fcHJlcGFyZShkZXNjKTsKPiA+IC0gICAg ICAgaWYgKGVycikKPiA+ICsgICAgICAgaWYgKGVycikgewo+ID4gKyAgICAgICAgICAgICAgIGlm IChkZXNjLT52bV9maWxlICE9IHZtYS0+dm1fZmlsZSkKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGZwdXQoZGVzYy0+dm1fZmlsZSk7Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsK PiA+ICsgICAgICAgfQo+ID4gICAgICAgICAvKiBVcGRhdGUgdGhlIFZNQSBmcm9tIHRoZSBkZXNj cmlwdG9yLiAqLwo+ID4gICAgICAgICBjb21wYXRfc2V0X3ZtYV9mcm9tX2Rlc2Modm1hLCBkZXNj KTsKPiA+ICAgICAgICAgLyogQ29tcGxldGUgYW55IHNwZWNpZmllZCBtbWFwIGFjdGlvbnMuICov Cj4gPiBkaWZmIC0tZ2l0IGEvbW0vdm1hLmMgYi9tbS92bWEuYwo+ID4gaW5kZXggNTU5MTdkMDk3 OTMzLi5mYTc4NGYwNjlkYTQgMTAwNjQ0Cj4gPiAtLS0gYS9tbS92bWEuYwo+ID4gKysrIGIvbW0v dm1hLmMKPiA+IEBAIC0yNCw3ICsyNCw4IEBAIHN0cnVjdCBtbWFwX3N0YXRlIHsKPiA+ICAgICAg ICAgICAgICAgICB2bV9mbGFnc190IHZtX2ZsYWdzOwo+ID4gICAgICAgICAgICAgICAgIHZtYV9m bGFnc190IHZtYV9mbGFnczsKPiA+ICAgICAgICAgfTsKPiA+IC0gICAgICAgc3RydWN0IGZpbGUg KmZpbGU7Cj4gPiArICAgICAgIHN0cnVjdCBmaWxlICpmaWxlOyAgICAgIC8qIG1tYXAoKS1zcGVj aWZpZWQgZmlsZS4gKi8KPiA+ICsgICAgICAgc3RydWN0IGZpbGUgKnZtX2ZpbGU7ICAgLyogTWF5 IGJlIHVwZGF0ZWQgYnkgbW1hcF9wcmVwYXJlLiAqLwo+Cj4gT3ZlcmFsbCBJIGxpa2UgdGhlIGNo YW5nZSBidXQgSSB0aGluayB5b3UgY291bGQgYXZvaWQgZXh0cmEgY2h1cm4gYnkKPiBrZWVwaW5n IHRoZSBuYW1lIG9mIGBmaWxlYCBhcyBpcyBhbmQgYWRkIGBzdHJ1Y3QgZmlsZSAqb3JpZ19maWxl YAo+IGluc3RlYWQgYXM6Cj4KPiArICAgICAgIHN0cnVjdCBmaWxlICpvcmlnX2ZpbGU7ICAgLyog bW1hcCgpLXNwZWNpZmllZCBvcmlnaW5hbCBmaWxlLiAqLwo+IC0gICAgICAgc3RydWN0IGZpbGUg KmZpbGU7Cj4gKyAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsgICAgICAvKiBNYXkgYmUgdXBkYXRl ZCBieSBtbWFwX3ByZXBhcmUuICovCj4KPiBUaGVuIG1hbnkgdXNlcyBvZiBtYXAtPmZpbGUgd291 bGQgc3RheSB1bmNoYW5nZWQuCgpJIGRpZG4ndCBhY3R1YWxseSB3YW50IHRvIGRvIHRoZSBjaHVy bnkgdmVyc2lvbiBvZiB0aGlzIGJ1dCB0aGUgcHJvYmxlbQp3aXRoIGRvaW5nIHNvbWV0aGluZyBl bHNlIGlzIHRoYXQgd291bGQgdGhlbiBjb250cmFkaWN0cyB3aGF0J3MgaW4Kdm1fYXJlYV9kZXNj OgoKc3RydWN0IHZtX2FyZWFfZGVzYyB7CgkvKiBJbW11dGFibGUgc3RhdGUuICovCgkuLi4KCXN0 cnVjdCBmaWxlICpmaWxlOyAvKiBNYXkgdmFyeSBmcm9tIHZtX2ZpbGUgaW4gc3RhY2tlZCBjYWxs ZXJzLiAqLwoJLi4uCgkvKiBNdXRhYmxlIGZpZWxkcy4gUG9wdWxhdGVkIHdpdGggaW5pdGlhbCBz dGF0ZS4gKi8KCS4uLgoJc3RydWN0IGZpbGUgKnZtX2ZpbGU7CgkuLi4KfTsKCkFuZCBzdWRkZW5s eSB3aGF0IGlzICdmaWxlJyB0aGVyZSAoaW5oZXJpdGVkIGZpbGUpIGlzIHRoZSBtb2RpZmlhYmxl IG9uZQpoZXJlIGFuZCBpdCdzIG1vcmUgY29uZnVzaW5nLgoKQXMgcGVyIHRoZSBjb21taXQgbXNn OgoKCVRyYWNrIHdoZXRoZXIgdGhpcyBuZWVkcyB0byBiZSBkb25lIGJ5IGFsaWduaW5nIG1tYXBf c3RhdGUgd2l0aAoJdm1fYXJlYV9kZXNjIGFuZCBzdG9yZSB0aGUgb3JpZ2luYWwgZmlsZSBpbiB0 aGUgbWFwLT5maWxlIGZpZWxkLCBrZWVwaW5nCgl0aGUgdXBkYXRlZCBmaWxlIGluIG1hcC0+dm1f ZmlsZS4KCkJ1dCBtYXliZSBJIG5lZWQgdG8gbWFrZSB0aGF0IGRlY2lzaW9uIGNsZWFyZXIgdGhl cmU/Cgo+Cj4gPiAgICAgICAgIHBncHJvdF90IHBhZ2VfcHJvdDsKPiA+Cj4gPiAgICAgICAgIC8q IFVzZXItZGVmaW5lZCBmaWVsZHMsIHBlcmhhcHMgdXBkYXRlZCBieSAubW1hcF9wcmVwYXJlKCku ICovCj4gPiBAQCAtNDMsOCArNDQsNiBAQCBzdHJ1Y3QgbW1hcF9zdGF0ZSB7Cj4gPgo+ID4gICAg ICAgICAvKiBEZXRlcm1pbmUgaWYgd2UgY2FuIGNoZWNrIEtTTSBmbGFncyBlYXJseSBpbiBtbWFw KCkgbG9naWMuICovCj4gPiAgICAgICAgIGJvb2wgY2hlY2tfa3NtX2Vhcmx5IDoxOwo+ID4gLSAg ICAgICAvKiBJZiAubW1hcF9wcmVwYXJlIGNoYW5nZWQgdGhlIGZpbGUsIHdlIGRvbid0IG5lZWQg dG8gcGluLiAqLwo+ID4gLSAgICAgICBib29sIGZpbGVfZG9lc250X25lZWRfZ2V0IDoxOwo+ID4g IH07Cj4gPgo+ID4gICNkZWZpbmUgTU1BUF9TVEFURShuYW1lLCBtbV8sIHZtaV8sIGFkZHJfLCBs ZW5fLCBwZ29mZl8sIGFub25fcGdvZmZfLCB2bWFfZmxhZ3NfLCBmaWxlXykgXAo+ID4gQEAgLTU4 LDYgKzU3LDcgQEAgc3RydWN0IG1tYXBfc3RhdGUgewo+ID4gICAgICAgICAgICAgICAgIC5wZ2xl biA9IFBIWVNfUEZOKGxlbl8pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4g ICAgICAgICAgICAgICAgIC52bWFfZmxhZ3MgPSB2bWFfZmxhZ3NfLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAgIC5maWxlID0gZmlsZV8sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gKyAgICAgICAgICAgICAg IC52bV9maWxlID0gZmlsZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ID4gICAgICAgICAgICAgICAgIC5wYWdlX3Byb3QgPSB2bWFfZmxhZ3NfdG9fcGFnZV9wcm90 KHZtYV9mbGFnc18pLCAgICAgICAgXAo+ID4gICAgICAgICB9Cj4gPgo+ID4gQEAgLTcwLDcgKzcw LDcgQEAgc3RydWN0IG1tYXBfc3RhdGUgewo+ID4gICAgICAgICAgICAgICAgIC52bWFfZmxhZ3Mg PSAobWFwXyktPnZtYV9mbGFncywgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gICAgICAg ICAgICAgICAgIC5wZ29mZiA9IChtYXBfKS0+cGdvZmYsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAgIC5hbm9uX3Bnb2ZmID0gKG1hcF8pLT5hbm9u X3Bnb2ZmLCAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gLSAgICAgICAgICAgICAgIC5maWxl ID0gKG1hcF8pLT5maWxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4g KyAgICAgICAgICAgICAgIC5maWxlID0gKG1hcF8pLT52bV9maWxlLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAgIC5wcmV2ID0gKG1hcF8pLT5wcmV2 LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAg IC5taWRkbGUgPSB2bWFfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ID4gICAgICAgICAgICAgICAgIC5uZXh0ID0gKHZtYV8pID8gTlVMTCA6IChtYXBfKS0+bmV4 dCwgICAgICAgICAgICAgICAgICAgXAo+ID4gQEAgLTI0NDcsNyArMjQ0Nyw3IEBAIHZvaWQgbW1f ZHJvcF9hbGxfbG9ja3Moc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gPiAgICovCj4gPiAgc3RhdGlj IGJvb2wgYWNjb3VudGFibGVfbWFwcGluZyhzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwKQo+ID4gIHsK PiA+IC0gICAgICAgY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUgPSBtYXAtPmZpbGU7Cj4gPiArICAg ICAgIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlID0gbWFwLT52bV9maWxlOwo+ID4KPiA+ICAgICAg ICAgLyoKPiA+ICAgICAgICAgICogaHVnZXRsYiBoYXMgaXRzIG93biBhY2NvdW50aW5nIHNlcGFy YXRlIGZyb20gdGhlIGNvcmUgVk0KPiA+IEBAIC0yNDk2LDcgKzI0OTYsNyBAQCBzdGF0aWMgdm9p ZCB2bXNfYWJvcnRfbXVubWFwX3ZtYXMoc3RydWN0IHZtYV9tdW5tYXBfc3RydWN0ICp2bXMsCj4g Pgo+ID4gIHN0YXRpYyB2b2lkIHVwZGF0ZV9rc21fZmxhZ3Moc3RydWN0IG1tYXBfc3RhdGUgKm1h cCkKPiA+ICB7Cj4gPiAtICAgICAgIG1hcC0+dm1hX2ZsYWdzID0ga3NtX3ZtYV9mbGFncyhtYXAt Pm1tLCBtYXAtPmZpbGUsIG1hcC0+dm1hX2ZsYWdzKTsKPiA+ICsgICAgICAgbWFwLT52bWFfZmxh Z3MgPSBrc21fdm1hX2ZsYWdzKG1hcC0+bW0sIG1hcC0+dm1fZmlsZSwgbWFwLT52bWFfZmxhZ3Mp Owo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIHZvaWQgc2V0X2Rlc2NfZnJvbV9tYXAoc3RydWN0IHZt X2FyZWFfZGVzYyAqZGVzYywKPiA+IEBAIC0yNTA2LDcgKzI1MDYsNyBAQCBzdGF0aWMgdm9pZCBz ZXRfZGVzY19mcm9tX21hcChzdHJ1Y3Qgdm1fYXJlYV9kZXNjICpkZXNjLAo+ID4gICAgICAgICBk ZXNjLT5lbmQgPSBtYXAtPmVuZDsKPiA+Cj4gPiAgICAgICAgIGRlc2MtPnBnb2ZmID0gbWFwLT5w Z29mZjsKPiA+IC0gICAgICAgZGVzYy0+dm1fZmlsZSA9IG1hcC0+ZmlsZTsKPiA+ICsgICAgICAg ZGVzYy0+dm1fZmlsZSA9IG1hcC0+dm1fZmlsZTsKPiA+ICAgICAgICAgZGVzYy0+dm1hX2ZsYWdz ID0gbWFwLT52bWFfZmxhZ3M7Cj4gPiAgICAgICAgIGRlc2MtPnBhZ2VfcHJvdCA9IG1hcC0+cGFn ZV9wcm90Owo+ID4gIH0KPiA+IEBAIC0yNTg2LDYgKzI1ODYsMTAgQEAgc3RhdGljIGludCBfX21t YXBfc2V0dXAoc3RydWN0IG1tYXBfc3RhdGUgKm1hcCwgc3RydWN0IHZtX2FyZWFfZGVzYyAqZGVz YywKPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0aWMgYm9vbCBtYXBf c2FtZV9maWxlKHN0cnVjdCBtbWFwX3N0YXRlICptYXApCj4gPiArewo+ID4gKyAgICAgICByZXR1 cm4gbWFwLT52bV9maWxlID09IG1hcC0+ZmlsZTsKPiA+ICt9Cj4gPgo+ID4gIHN0YXRpYyBpbnQg X19tbWFwX25ld19maWxlX3ZtYShzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwLAo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ID4gQEAg LTI1OTMsMjAgKzI1OTcsMjMgQEAgc3RhdGljIGludCBfX21tYXBfbmV3X2ZpbGVfdm1hKHN0cnVj dCBtbWFwX3N0YXRlICptYXAsCj4gPiAgICAgICAgIHN0cnVjdCB2bWFfaXRlcmF0b3IgKnZtaSA9 IG1hcC0+dm1pOwo+ID4gICAgICAgICBpbnQgZXJyb3I7Cj4gPgo+ID4gLSAgICAgICB2bWEtPnZt X2ZpbGUgPSBtYXAtPmZpbGU7Cj4gPiAtICAgICAgIGlmICghbWFwLT5maWxlX2RvZXNudF9uZWVk X2dldCkKPiA+IC0gICAgICAgICAgICAgICBnZXRfZmlsZShtYXAtPmZpbGUpOwo+ID4gKyAgICAg ICB2bWEtPnZtX2ZpbGUgPSBtYXAtPnZtX2ZpbGU7Cj4gPiArICAgICAgIGlmIChtYXBfc2FtZV9m aWxlKG1hcCkpCj4gPiArICAgICAgICAgICAgICAgZ2V0X2ZpbGUobWFwLT52bV9maWxlKTsKPiA+ Cj4gPiAtICAgICAgIGlmICghbWFwLT5maWxlLT5mX29wLT5tbWFwKQo+ID4gKyAgICAgICBpZiAo IW1hcC0+dm1fZmlsZS0+Zl9vcC0+bW1hcCkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsK PiA+Cj4gPiAgICAgICAgIGVycm9yID0gbW1hcF9maWxlKHZtYS0+dm1fZmlsZSwgdm1hKTsKPiA+ ICsgICAgICAgbWFwLT52bV9maWxlID0gdm1hLT52bV9maWxlOwo+ID4gKwo+ID4gICAgICAgICBp ZiAoZXJyb3IpIHsKPiA+ICAgICAgICAgICAgICAgICBVTk1BUF9TVEFURSh1bm1hcCwgdm1pLCB2 bWEsIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1fZW5kLAo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hcC0+cHJldiwgbWFwLT5uZXh0KTsKPiA+IC0gICAgICAgICAgICAgICBmcHV0KHZt YS0+dm1fZmlsZSk7Cj4gPiAtICAgICAgICAgICAgICAgdm1hLT52bV9maWxlID0gTlVMTDsKPiA+ ICsgICAgICAgICAgICAgICBpZiAobWFwX3NhbWVfZmlsZShtYXApKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgZnB1dChtYXAtPnZtX2ZpbGUpOwo+ID4KPiA+ICsgICAgICAgICAgICAgICB2 bWEtPnZtX2ZpbGUgPSBOVUxMOwo+ID4gICAgICAgICAgICAgICAgIHZtYV9pdGVyX3NldCh2bWks IHZtYS0+dm1fZW5kKTsKPiA+ICAgICAgICAgICAgICAgICAvKiBVbmRvIGFueSBwYXJ0aWFsIG1h cHBpbmcgZG9uZSBieSBhIGRldmljZSBkcml2ZXIuICovCj4gPiAgICAgICAgICAgICAgICAgdW5t YXBfcmVnaW9uKCZ1bm1hcCk7Cj4gPiBAQCAtMjYyMyw3ICsyNjMwLDYgQEAgc3RhdGljIGludCBf X21tYXBfbmV3X2ZpbGVfdm1hKHN0cnVjdCBtbWFwX3N0YXRlICptYXAsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAhdm1hX2ZsYWdzX3Rlc3QoJm1hcC0+dm1hX2ZsYWdzLCBWTUFfTUFZV1JJ VEVfQklUKSAmJgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgdm1hX3Rlc3Qodm1hLCBWTUFf TUFZV1JJVEVfQklUKSk7Cj4gPgo+ID4gLSAgICAgICBtYXAtPmZpbGUgPSB2bWEtPnZtX2ZpbGU7 Cj4gPiAgICAgICAgIG1hcC0+dm1hX2ZsYWdzID0gdm1hLT5mbGFnczsKPiA+Cj4gPiAgICAgICAg IHJldHVybiAwOwo+ID4gQEAgLTI2MzEsNyArMjYzNyw3IEBAIHN0YXRpYyBpbnQgX19tbWFwX25l d19maWxlX3ZtYShzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwLAo+ID4KPiA+ICBzdGF0aWMgdm9pZCBt YXBfc2V0X2Fub24oc3RydWN0IG1tYXBfc3RhdGUgKm1hcCkKPiA+ICB7Cj4gPiAtICAgICAgIG1h cC0+ZmlsZSA9IE5VTEw7Cj4gPiArICAgICAgIG1hcC0+dm1fZmlsZSA9IE5VTEw7Cj4gPiAgICAg ICAgIG1hcC0+dm1fb3BzID0gTlVMTDsKPiA+ICAgICAgICAgbWFwLT5wZ29mZiA9IG1hcC0+YWRk ciA+PiBQQUdFX1NISUZUOwo+ID4gIH0KPiA+IEBAIC0yNjQzLDcgKzI2NDksNyBAQCBzdGF0aWMg Ym9vbCBtYXBfaXNfcHJpdmF0ZShjb25zdCBzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwKQo+ID4KPiA+ ICBzdGF0aWMgYm9vbCBtYXBfaXNfYW5vbihjb25zdCBzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwKQo+ ID4gIHsKPiA+IC0gICAgICAgcmV0dXJuIG1hcF9pc19wcml2YXRlKG1hcCkgJiYgIW1hcC0+Zmls ZTsKPiA+ICsgICAgICAgcmV0dXJuIG1hcF9pc19wcml2YXRlKG1hcCkgJiYgIW1hcC0+dm1fZmls ZTsKPiA+ICB9Cj4gPgo+ID4gIC8qCj4gPiBAQCAtMjY4OCw3ICsyNjk0LDcgQEAgc3RhdGljIGlu dCBfX21tYXBfbmV3X3ZtYShzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwLCBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKip2bWFwLAo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAvKiBJbnZva2UgY2Fs bGJhY2tzLiAqLwo+ID4gLSAgICAgICBpZiAobWFwLT5maWxlKQo+ID4gKyAgICAgICBpZiAobWFw LT52bV9maWxlKQo+ID4gICAgICAgICAgICAgICAgIGVycm9yID0gX19tbWFwX25ld19maWxlX3Zt YShtYXAsIHZtYSk7Cj4gPiAgICAgICAgIGVsc2UgaWYgKCFpc19hbm9uKQo+ID4gICAgICAgICAg ICAgICAgIGVycm9yID0gc2htZW1femVyb19zZXR1cCh2bWEpOwo+ID4gQEAgLTI3OTcsMTEgKzI4 MDMsMTUgQEAgc3RhdGljIGludCBjYWxsX21tYXBfcHJlcGFyZShzdHJ1Y3QgbW1hcF9zdGF0ZSAq bWFwLAo+ID4gICAgICAgICBpbnQgZXJyOwo+ID4KPiA+ICAgICAgICAgLyogSW52b2tlIHRoZSBo b29rLiAqLwo+ID4gLSAgICAgICBlcnIgPSB2ZnNfbW1hcF9wcmVwYXJlKG1hcC0+ZmlsZSwgZGVz Yyk7Cj4gPiArICAgICAgIGVyciA9IHZmc19tbWFwX3ByZXBhcmUobWFwLT52bV9maWxlLCBkZXNj KTsKPiA+ICAgICAgICAgaWYgKGVycikKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ ID4KPiA+IC0gICAgICAgLyogSXQncyBpbnZhbGlkIGZvciBtbWFwX3ByZXByYXJlIGhvb2tzIHRv IGNsZWFyIHZtX29wcy4gKi8KPiA+ICsgICAgICAgLyogVXBkYXRlIGZpcnN0IHNvIGZpbGUgcmVm Y291bnQgdHJhY2tlZCBjb3JyZWN0bHkuICovCj4gPiArICAgICAgIGlmIChkZXNjLT52bV9maWxl ICE9IG1hcC0+dm1fZmlsZSkKPiA+ICsgICAgICAgICAgICAgICBtYXAtPnZtX2ZpbGUgPSBkZXNj LT52bV9maWxlOwo+ID4gKwo+ID4gKyAgICAgICAvKiBJdCdzIGludmFsaWQgZm9yIG1tYXBfcHJl cGFyZSBob29rcyB0byBjbGVhciB2bV9vcHMuICovCj4gPiAgICAgICAgIGlmICghZGVzYy0+dm1f b3BzKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4KPiA+IEBAIC0yODEx LDEwICsyODIxLDYgQEAgc3RhdGljIGludCBjYWxsX21tYXBfcHJlcGFyZShzdHJ1Y3QgbW1hcF9z dGF0ZSAqbWFwLAo+ID4KPiA+ICAgICAgICAgLyogVXBkYXRlIGZpZWxkcyBwZXJtaXR0ZWQgdG8g YmUgY2hhbmdlZC4gKi8KPiA+ICAgICAgICAgbWFwLT5wZ29mZiA9IGRlc2MtPnBnb2ZmOwo+ID4g LSAgICAgICBpZiAoZGVzYy0+dm1fZmlsZSAhPSBtYXAtPmZpbGUpIHsKPiA+IC0gICAgICAgICAg ICAgICBtYXAtPmZpbGVfZG9lc250X25lZWRfZ2V0ID0gdHJ1ZTsKPiA+IC0gICAgICAgICAgICAg ICBtYXAtPmZpbGUgPSBkZXNjLT52bV9maWxlOwo+ID4gLSAgICAgICB9Cj4gPiAgICAgICAgIG1h cC0+dm1hX2ZsYWdzID0gZGVzYy0+dm1hX2ZsYWdzOwo+ID4gICAgICAgICBtYXAtPnBhZ2VfcHJv dCA9IGRlc2MtPnBhZ2VfcHJvdDsKPiA+ICAgICAgICAgLyogVXNlci1kZWZpbmVkIGZpZWxkcy4g Ki8KPiA+IEBAIC0yODI2LDcgKzI4MzIsNyBAQCBzdGF0aWMgaW50IGNhbGxfbW1hcF9wcmVwYXJl KHN0cnVjdCBtbWFwX3N0YXRlICptYXAsCj4gPiAgICAgICAgICAqIGFub255bW91cyBtYXBwaW5n cy4gUmF0aGVyIHRoYW4gYWxsb3dpbmcgdGhlc2UgbWFwcGluZ3MgdG8gYmUgb2RkCj4gPiAgICAg ICAgICAqIG91dGxpZXJzLCBzaW1wbHkgbWFrZSB0aGVtIHRydWx5IGFub255bW91cy4KPiA+ICAg ICAgICAgICovCj4gPiAtICAgICAgIGlmIChtYXBfaXNfcHJpdmF0ZShtYXApICYmIGZpbGVfaXNf ZGV2X3plcm8obWFwLT5maWxlKSkKPiA+ICsgICAgICAgaWYgKG1hcF9pc19wcml2YXRlKG1hcCkg JiYgZmlsZV9pc19kZXZfemVybyhtYXAtPnZtX2ZpbGUpKQo+ID4gICAgICAgICAgICAgICAgIG1h cF9zZXRfYW5vbihtYXApOwo+ID4KPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiBAQCAtMjg0NSw3 ICsyODUxLDcgQEAgc3RhdGljIHZvaWQgc2V0X3ZtYV91c2VyX2RlZmluZWRfZmllbGRzKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ID4gICAqLwo+ID4gIHN0YXRpYyBib29sIGNhbl9zZXRf a3NtX2ZsYWdzX2Vhcmx5KHN0cnVjdCBtbWFwX3N0YXRlICptYXApCj4gPiAgewo+ID4gLSAgICAg ICBzdHJ1Y3QgZmlsZSAqZmlsZSA9IG1hcC0+ZmlsZTsKPiA+ICsgICAgICAgc3RydWN0IGZpbGUg KmZpbGUgPSBtYXAtPnZtX2ZpbGU7Cj4gPgo+ID4gICAgICAgICAvKiBBbm9ueW1vdXMgbWFwcGlu Z3MgaGF2ZSBubyBkcml2ZXIgd2hpY2ggY2FuIGNoYW5nZSB0aGVtLiAqLwo+ID4gICAgICAgICBp ZiAoIWZpbGUpCj4gPiBAQCAtMjg2OCw2ICsyODc0LDIwIEBAIHN0YXRpYyBib29sIGNhbl9zZXRf a3NtX2ZsYWdzX2Vhcmx5KHN0cnVjdCBtbWFwX3N0YXRlICptYXApCj4gPiAgICAgICAgIHJldHVy biBmYWxzZTsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyB2b2lkIHB1dF9tYXAoc3RydWN0IG1tYXBf c3RhdGUgKm1hcCkKPgo+IG5pdDogbWF5YmUgcHV0X21hcF9maWxlKCkgdG8gYmUgbW9yZSBzcGVj aWZpYz8KClN1cmUgd2lsbCBjaGFuZ2UuCgo+Cj4gPiArewo+ID4gKyAgICAgICAvKgo+ID4gKyAg ICAgICAgKiBBbiBlcnJvciBvY2N1cnJlZCBvciB0aGUgVk1BIHdhcyBtZXJnZWQuCj4KPiBJdCdz IGEgYml0IHdlaXJkIHRoYXQgdGhlIGZ1bmN0aW9uIGV4cGxhaW5zIHdoZW4gaXQgaXMgYmVpbmcg dXNlZC4KPiBIYXZpbmcgYW4gYXBwcm9wcmlhdGUgY29tbWVudCBhdCB0aGUgY2FsbCBzaXRlIHNl ZW1zIGJldHRlciB0byBtZS4KCkFjayB3aWxsIGNoYW5nZS4KCj4KPiA+ICsgICAgICAgICoKPiA+ ICsgICAgICAgICogSWYgdGhlIGZpbGUgd2FzIGNoYW5nZWQgYnkgdGhlIGRyaXZlciAod2hpY2gg aXMgcmVxdWlyZWQgdG8gaW5jcmVtZW50Cj4gPiArICAgICAgICAqIHRoZSByZXBsYWNlbWVudCBm aWxlJ3MgcmVmZXJlbmNlIGNvdW50KSwgZHJvcCBpdHMgcmVmZXJlbmNlIGNvdW50Lgo+ID4gKyAg ICAgICAgKgo+ID4gKyAgICAgICAgKiBPbiBlcnJvciwgdGhlIGNhbGxlciBhbHdheXMgZHJvcHMg dGhlIG9yaWdpbmFsIGZpbGUgcmVnYXJkbGVzcy4KPiA+ICsgICAgICAgICovCj4gPiArICAgICAg IGlmIChtYXAtPnZtX2ZpbGUgJiYgIW1hcF9zYW1lX2ZpbGUobWFwKSkKPiA+ICsgICAgICAgICAg ICAgICBmcHV0KG1hcC0+dm1fZmlsZSk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB1bnNpZ25l ZCBsb25nIF9fbW1hcF9yZWdpb24oc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRk ciwKPiA+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdm1hX2ZsYWdzX3Qgdm1h X2ZsYWdzLAo+ID4gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGdvZmYsIHN0cnVjdCBs aXN0X2hlYWQgKnVmKQo+ID4gQEAgLTI5MjIsNyArMjk0MiwxMCBAQCBzdGF0aWMgdW5zaWduZWQg bG9uZyBfX21tYXBfcmVnaW9uKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFkZHIs Cj4gPgo+ID4gICAgICAgICBfX21tYXBfY29tcGxldGUoJm1hcCwgdm1hKTsKPiA+Cj4gPiAtICAg ICAgIGlmIChoYXZlX21tYXBfcHJlcGFyZSAmJiBhbGxvY2F0ZWRfbmV3KSB7Cj4gPiArICAgICAg IGlmICghYWxsb2NhdGVkX25ldykgewo+ID4gKyAgICAgICAgICAgICAgIC8qIE1lcmdlZCwgc28g bmVlZCB0byBkcm9wIHJlZmNvdW50LiAqLwo+ID4gKyAgICAgICAgICAgICAgIHB1dF9tYXAoJm1h cCk7Cj4gPiArICAgICAgIH0gZWxzZSBpZiAoaGF2ZV9tbWFwX3ByZXBhcmUpIHsKPiA+ICAgICAg ICAgICAgICAgICBlcnJvciA9IG1tYXBfYWN0aW9uX2NvbXBsZXRlKHZtYSwgJmRlc2MuYWN0aW9u LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppc19j b21wYXQ9Ki9mYWxzZSk7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQo+ID4gQEAgLTI5 MzYsMTMgKzI5NTksNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX21tYXBfcmVnaW9uKHN0cnVj dCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gPiAgICAgICAgIGlmIChtYXAuY2hh cmdlZCkKPiA+ICAgICAgICAgICAgICAgICB2bV91bmFjY3RfbWVtb3J5KG1hcC5jaGFyZ2VkKTsK PiA+ICBhYm9ydF9tdW5tYXA6Cj4gPiAtICAgICAgIC8qCj4gPiAtICAgICAgICAqIFRoaXMgaW5k aWNhdGVzIHRoYXQgLm1tYXBfcHJlcGFyZSBoYXMgc2V0IGEgbmV3IGZpbGUsIGRpZmZlcmluZyBm cm9tCj4gPiAtICAgICAgICAqIGRlc2MtPnZtX2ZpbGUuIEJ1dCBzaW5jZSB3ZSdyZSBhYm9ydGlu ZyB0aGUgb3BlcmF0aW9uLCBvbmx5IHRoZQo+ID4gLSAgICAgICAgKiBvcmlnaW5hbCBmaWxlIHdp bGwgYmUgY2xlYW5lZCB1cC4gRW5zdXJlIHdlIGNsZWFuIHVwIGJvdGguCj4gPiAtICAgICAgICAq Lwo+ID4gLSAgICAgICBpZiAobWFwLmZpbGVfZG9lc250X25lZWRfZ2V0KQo+ID4gLSAgICAgICAg ICAgICAgIGZwdXQobWFwLmZpbGUpOwo+ID4gKyAgICAgICBwdXRfbWFwKCZtYXApOwo+ID4gICAg ICAgICB2bXNfYWJvcnRfbXVubWFwX3ZtYXMoJm1hcC52bXMsICZtYXAubWFzX2RldGFjaCk7Cj4g PiAgICAgICAgIHJldHVybiBlcnJvcjsKPiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvbW0vdm1hLmgg Yi9tbS92bWEuaAo+ID4gaW5kZXggZTk3YmQyZGZhNzg2Li5mMTVmYWE4M2YzZDYgMTAwNjQ0Cj4g PiAtLS0gYS9tbS92bWEuaAo+ID4gKysrIGIvbW0vdm1hLmgKPiA+IEBAIC0zOTQsOCArMzk0LDEw IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb21wYXRfc2V0X3ZtYV9mcm9tX2Rlc2Moc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsCj4gPgo+ID4gICAgICAgICAvKiBNdXRhYmxlIGZpZWxkcy4gUG9w dWxhdGVkIHdpdGggaW5pdGlhbCBzdGF0ZS4gKi8KPiA+ICAgICAgICAgdm1hX3NldF9wZ29mZih2 bWEsIGRlc2MtPnBnb2ZmKTsKPiA+IC0gICAgICAgaWYgKGRlc2MtPnZtX2ZpbGUgIT0gdm1hLT52 bV9maWxlKQo+ID4gLSAgICAgICAgICAgICAgIHZtYV9zZXRfZmlsZSh2bWEsIGRlc2MtPnZtX2Zp bGUpOwo+ID4gKyAgICAgICBpZiAoZGVzYy0+dm1fZmlsZSAhPSB2bWEtPnZtX2ZpbGUpIHsKPiA+ ICsgICAgICAgICAgICAgICBmcHV0KHZtYS0+dm1fZmlsZSk7Cj4gPiArICAgICAgICAgICAgICAg dm1hLT52bV9maWxlID0gZGVzYy0+dm1fZmlsZTsKPiA+ICsgICAgICAgfQo+ID4gICAgICAgICB2 bWEtPmZsYWdzID0gZGVzYy0+dm1hX2ZsYWdzOwo+ID4gICAgICAgICB2bWEtPnZtX3BhZ2VfcHJv dCA9IGRlc2MtPnBhZ2VfcHJvdDsKPiA+Cj4gPgo+ID4gLS0KPiA+IDIuNTUuMAo+ID4KCi0tCkNo ZWVycywgTG9yZW56bwoKLS0gCmt2bS1yaXNjdiBtYWlsaW5nIGxpc3QKa3ZtLXJpc2N2QGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9rdm0tcmlzY3YK 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 30204C98338 for ; Fri, 25 Sep 2026 23:41:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=dnAs9SsCOHyiRro5cUPJvRqFwoW8I+lWg86yNlW3rvM=; b=WiReVL9mPI6PBj yC/lJKzqlGnG7RQxb5yQk7W1t3jemegbYVkVwfWvwgvh3lnHDIOzUQY5Z3YWr0zz5bsT382kQ17YP 34GsEZ4xMT3a1lu5bSgrV7+XJxajop4B9mDZYuxzyPQMAHgkWfNybma8oBVMJ0cwRgUKfk3+Y0oo5 h6lBKJrSiRRlB2edG8HKx8q8S2iNg+9vH05u+ZLWxsI61j0LkVg+aBY6cfUY+33/uakKyV/VQX8OX ka7aXrQz1Ui4EUsMvWVNAmDSVKWArBqxPn574ZsnHB09Nc0GBBwXTeXtLH6zOjZOZq+jSc/0gg2aU BvLUBPbKrWYP/CshRugQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xAFXG-0000000EeN2-2m2J; Fri, 25 Sep 2026 23:40:58 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x9PBh-00000008nZs-1MHP; Wed, 23 Sep 2026 15:47:13 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 07CE14353E; Wed, 23 Sep 2026 15:47:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D111F000FF; Wed, 23 Sep 2026 15:46:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790178432; bh=A9s/BYxYsxmIUd2ggYhNRz11koMa/mZl2NbZ9+ZbYI0=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=EIHX04oSQJKo94mpzbyGnEQxAzsufArn9Dgt95ktpFqZxe3xWv1YBsUqm4+kBAxgj YeOd6h9VANMyGKxodACmnSQBggFcVeQbaJ6XzAdB/bMrK3a3z5fSbzkL06oPNtVpyP 0iVeTcZz27Uq19vg805MtbGVQ4RDGmUIxJJSL1Q7OMXjYvaYd0CaySGe6R8SOzrTAa cncsHzspiOHvV3P4rHKhkz2AWVSpblm5cxABgQxwx+6lz5bCwafz575cehiQrKU3OE uoQkvgmHT8i4rSjwR86iyvQJTrpmbdAQsVmSOE7LaE1elZPlB9KagahIZQFEo9o+hm X17tS4JRWuhBQ== Date: Wed, 23 Sep 2026 16:46:42 +0100 From: "Lorenzo Stoakes (ARM)" To: Suren Baghdasaryan Cc: Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Jann Horn , Pedro Falcato , David Hildenbrand , Mike Rapoport , Michal Hocko , Jonathan Corbet , Greg Kroah-Hartman , Dennis Dalessandro , Jason Gunthorpe , Leon Romanovsky , Paul Moore , Stephen Smalley , Jaroslav Kysela , Takashi Iwai , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Eduard Zingerman , Kumar Kartikeya Dwivedi , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Usama Arif , Kiryl Shutsemau , Doug Gilbert , "James E.J. Bottomley" , "Martin K. Petersen" , Jaya Kumar , Simona Vetter , Helge Deller , Sebastian Reichel , John Hubbard , Peter Xu , Masami Hiramatsu , Oleg Nesterov , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Rik van Riel , Harry Yoo , Juri Lelli , Vincent Guittot , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Will Deacon , "Aneesh Kumar K.V" , Nick Piggin , Arnd Bergmann , Muchun Song , Oscar Salvador , "Matthew Wilcox (Oracle)" , Jan Kara , Marc Zyngier , Oliver Upton , Catalin Marinas , Madhavan Srinivasan , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Christian Borntraeger , Janosch Frank , Claudio Imbrenda , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , "David S. Miller" , Andreas Larsson , Alexander Viro , Christian Brauner , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Baoquan He , Youngjun Park , Johannes Weiner , Qi Zheng , Shakeel Butt , Axel Rasmussen , Yuanchu Xie , Wei Xu , Chengming Zhou , Michal Hocko , Miklos Szeredi , Xu Xin , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-usb@vger.kernel.org, linux-rdma@vger.kernel.org, selinux@vger.kernel.org, linux-sound@vger.kernel.org, bpf@vger.kernel.org, linux-scsi@vger.kernel.org, linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arch@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, fuse-devel@lists.linux.dev Subject: Re: [PATCH v3 01/40] mm/vma: fix mmap_prepare file handling, remove file_doesnt_need_get Message-ID: References: <20260917-b4-mmap-prepare-vma-flag-sanify-v3-0-4583d8a23bca@kernel.org> <20260917-b4-mmap-prepare-vma-flag-sanify-v3-1-4583d8a23bca@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailman-Approved-At: Fri, 25 Sep 2026 16:40:51 -0700 X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBTZXAgMjMsIDIwMjYgYXQgMDg6MjE6NThBTSAtMDcwMCwgU3VyZW4gQmFnaGRhc2Fy eWFuIHdyb3RlOgo+IE9uIFRodSwgU2VwIDE3LCAyMDI2IGF0IDk6MjPigK9BTSBMb3JlbnpvIFN0 b2FrZXMgKEFSTSkgPGxqc0BrZXJuZWwub3JnPiB3cm90ZToKPiA+Cj4gPiBUaGUgbWFwLT5maWxl X2RvZXNudF9uZWVkX2dldCBmbGFnIGlzIGNvbmZ1c2luZyBhbmQgdGhlIGV4aXN0aW5nCj4gPiBp bXBsZW1lbnRhdGlvbiBoYXMgaG9sZXMuCj4gPgo+ID4gRHJpdmVycyBhcmUgcGVybWl0dGVkIHRv IGNoYW5nZSB0aGUgb3duaW5nIGZpbGUgb2YgYSBtYXBwaW5nLiBJZiB0aGV5IGRvCj4gPiBzbywg dGhleSBhcmUgcmVxdWlyZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSBvbiB0aGF0IGZpbGUuCj4gPgo+ ID4gVGhlIG1tYXAoKSBvcGVyYXRpb24gd2hpY2ggdWx0aW1hdGVseSBpbnZva2VzIF9fbW1hcF9y ZWdpb24oKSBpcyBndWFyYW50ZWVkCj4gPiB0byBkcm9wIHRoZSByZWZjb3VudCBmb3IgdGhlIG9y aWdpbmFsIGZpbGUgdGhlIG1hcHBpbmcgd2FzIG1hZGUgdW5kZXIsIGJ1dAo+ID4gdGhpcyBpcyBu b3QgdHJ1ZSBmb3IgdGhlIHJlcGxhY2VkIGZpbGUuCj4gPgo+ID4gVGhpcyBoYXMgYmVlbiBhZGRy ZXNzZWQgc28gZmFyIGJ5IHRyYWNraW5nIG1hcC0+ZmlsZV9kb2VzbnRfbmVlZF9nZXQsIHdoaWNo Cj4gPiBpcyByYXRoZXIgcG9vcmx5IG5hbWVkIGFuZCB1bmZvcnR1bmF0ZWx5IGZhaWxzIHRvIGNv cnJlY3RseSB0cmFjayB3aGV0aGVyCj4gPiBvciBub3QgYW4gYWRkaXRpb25hbCBwdXQgd2VyZSBu ZWVkZWQgaW4gYSBudW1iZXIgb2YgY2FzZXMuCj4gPgo+ID4gTWFrZSBsaWZlIGVhc2llciBieSBy ZW1vdmluZyB0aGlzIGZsYWcsIGFuZCBpbnN0ZWFkIGRyb3AgdGhlIHJlZmVyZW5jZSBmb3IKPiA+ IGJvdGggbW1hcF9wcmVwYXJlIGFuZCB0aGUgZGVwcmVjYXRlZCBtbWFwIGNhbGxiYWNrIGluIGEg bmV3IGZ1bmN0aW9uCj4gPiBwdXRfbWFwKCkuCj4gPgo+ID4gVHJhY2sgd2hldGhlciB0aGlzIG5l ZWRzIHRvIGJlIGRvbmUgYnkgYWxpZ25pbmcgbW1hcF9zdGF0ZSB3aXRoCj4gPiB2bV9hcmVhX2Rl c2MgYW5kIHN0b3JlIHRoZSBvcmlnaW5hbCBmaWxlIGluIHRoZSBtYXAtPmZpbGUgZmllbGQsIGtl ZXBpbmcKPiA+IHRoZSB1cGRhdGVkIGZpbGUgaW4gbWFwLT52bV9maWxlLgo+ID4KPiA+IEluIG9y ZGVyIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIGZvciBib3RoIHR5cGVzIG9mIGhvb2tzLCBv bmx5IGRyb3AgdGhlCj4gPiByZWZlcmVuY2UgX19tbWFwX25ld19maWxlX3ZtYSgpIGl0c2VsZiB0 b29rIGluIGl0cyBlcnJvciBwYXRoLCBkZWZlcnJpbmcKPiA+IHRoZSByZXBsYWNlZCBmaWxlJ3Mg cmVmZXJlbmNlIHRvIHB1dF9tYXAoKS4KPiA+Cj4gPiBUbyBtYWtlIHRoaXMgd29yayBjb3JyZWN0 bHksIG1hcC0+dm1fZmlsZSBoYXMgdG8gYmUgdXBkYXRlZCBiZWZvcmUgYW55Cj4gPiBlcnJvciBo YW5kbGluZywgc28gdXBkYXRlIF9fbW1hcF9uZXdfZmlsZV92bWEoKSBhbmQgY2FsbF9tbWFwX3By ZXBhcmUoKSB0bwo+ID4gc2V0IHRoaXMgZmllbGQgZmlyc3QuCj4gPgo+ID4gQWxzbyB3aGVuIG1t YXBfcHJlcGFyZSgpIGNoYW5nZXMgdGhlIGZpbGUgYW5kIGlzIHRoZW4gbWVyZ2VkLCB0aGUgcmVm ZXJlbmNlCj4gPiBjb3VudCBhbHNvIG11c3QgYmUgZGVjcmVtZW50ZWQsIHNvIHVwZGF0ZSB0aGUg bG9naWMgdG8gY2FsbCBwdXRfbWFwKCkgaW4KPiA+IHRoaXMgY2FzZSB0b28uCj4gPgo+ID4gQWxz byB1cGRhdGUgX19jb21wYXRfdm1hX21tYXAoKSB0byBtYW51YWxseSBwZXJmb3JtIHRoaXMgc3Rl cCBmb3Igc3RhY2tlZAo+ID4gZmlsZSBzeXN0ZW1zIHVzaW5nIHRoZSBjb21wYXRpYmlsaXR5IGxh eWVyLCBhbmQgdXBkYXRlCj4gPiBjb21wYXRfc2V0X3ZtYV9mcm9tX2Rlc2MoKSB0byByZXBsYWNl IHZtYV9zZXRfZmlsZSgpIHdpdGggYSBjb3JyZWN0Cj4gPiByZWZjb3VudC9maWxlIHVwZGF0ZS4K PiA+Cj4gPiBObyBpbi10cmVlIGRyaXZlciBpcyBpbXBhY3RlZCBieSB0aGUgaW5jb3JyZWN0IGlt cGxlbWVudGF0aW9uIG9mIHRoaXMKPiA+IGN1cnJlbnRseSAobm8gZHJpdmVyIHRoYXQgZG9lcyB0 aGlzIGlzIG1lcmdlYWJsZSBmb3Igb25lKSwgc28gdGhpcyBkb2VzIG5vdAo+ID4gbmVlZCB0byBi ZSBhIGZpeC4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBMb3JlbnpvIFN0b2FrZXMgKEFSTSkgPGxq c0BrZXJuZWwub3JnPgo+ID4gLS0tCj4gPiAgbW0vaW50ZXJuYWwuaCB8ICAxICsKPiA+ICBtbS91 dGlsLmMgICAgIHwgIDUgKysrLQo+ID4gIG1tL3ZtYS5jICAgICAgfCA4MyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gIG1tL3Zt YS5oICAgICAgfCAgNiArKystLQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygr KSwgMzYgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL21tL2ludGVybmFsLmggYi9t bS9pbnRlcm5hbC5oCj4gPiBpbmRleCAwZGNhMzNkYjA2OGYuLmZlNTc2ZDQ2OGFmNCAxMDA2NDQK PiA+IC0tLSBhL21tL2ludGVybmFsLmgKPiA+ICsrKyBiL21tL2ludGVybmFsLmgKPiA+IEBAIC03 LDYgKzcsNyBAQAo+ID4gICNpZm5kZWYgX19NTV9JTlRFUk5BTF9ICj4gPiAgI2RlZmluZSBfX01N X0lOVEVSTkFMX0gKPiA+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KPiA+ICAjaW5jbHVk ZSA8bGludXgvZnMuaD4KPiA+ICAjaW5jbHVkZSA8bGludXgva2h1Z2VwYWdlZC5oPgo+ID4gICNp bmNsdWRlIDxsaW51eC9tbS5oPgo+ID4gZGlmZiAtLWdpdCBhL21tL3V0aWwuYyBiL21tL3V0aWwu Ywo+ID4gaW5kZXggYmYwNTEzZDFkM2QwLi4wMTY5MzI3ODA5MjUgMTAwNjQ0Cj4gPiAtLS0gYS9t bS91dGlsLmMKPiA+ICsrKyBiL21tL3V0aWwuYwo+ID4gQEAgLTEyMjgsOCArMTIyOCwxMSBAQCBp bnQgX19jb21wYXRfdm1hX21tYXAoc3RydWN0IHZtX2FyZWFfZGVzYyAqZGVzYywKPiA+Cj4gPiAg ICAgICAgIC8qIFBlcmZvcm0gYW55IHByZXBhcmF0b3J5IHRhc2tzIGZvciBtbWFwIGFjdGlvbi4g Ki8KPiA+ICAgICAgICAgZXJyID0gbW1hcF9hY3Rpb25fcHJlcGFyZShkZXNjKTsKPiA+IC0gICAg ICAgaWYgKGVycikKPiA+ICsgICAgICAgaWYgKGVycikgewo+ID4gKyAgICAgICAgICAgICAgIGlm IChkZXNjLT52bV9maWxlICE9IHZtYS0+dm1fZmlsZSkKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGZwdXQoZGVzYy0+dm1fZmlsZSk7Cj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsK PiA+ICsgICAgICAgfQo+ID4gICAgICAgICAvKiBVcGRhdGUgdGhlIFZNQSBmcm9tIHRoZSBkZXNj cmlwdG9yLiAqLwo+ID4gICAgICAgICBjb21wYXRfc2V0X3ZtYV9mcm9tX2Rlc2Modm1hLCBkZXNj KTsKPiA+ICAgICAgICAgLyogQ29tcGxldGUgYW55IHNwZWNpZmllZCBtbWFwIGFjdGlvbnMuICov Cj4gPiBkaWZmIC0tZ2l0IGEvbW0vdm1hLmMgYi9tbS92bWEuYwo+ID4gaW5kZXggNTU5MTdkMDk3 OTMzLi5mYTc4NGYwNjlkYTQgMTAwNjQ0Cj4gPiAtLS0gYS9tbS92bWEuYwo+ID4gKysrIGIvbW0v dm1hLmMKPiA+IEBAIC0yNCw3ICsyNCw4IEBAIHN0cnVjdCBtbWFwX3N0YXRlIHsKPiA+ICAgICAg ICAgICAgICAgICB2bV9mbGFnc190IHZtX2ZsYWdzOwo+ID4gICAgICAgICAgICAgICAgIHZtYV9m bGFnc190IHZtYV9mbGFnczsKPiA+ICAgICAgICAgfTsKPiA+IC0gICAgICAgc3RydWN0IGZpbGUg KmZpbGU7Cj4gPiArICAgICAgIHN0cnVjdCBmaWxlICpmaWxlOyAgICAgIC8qIG1tYXAoKS1zcGVj aWZpZWQgZmlsZS4gKi8KPiA+ICsgICAgICAgc3RydWN0IGZpbGUgKnZtX2ZpbGU7ICAgLyogTWF5 IGJlIHVwZGF0ZWQgYnkgbW1hcF9wcmVwYXJlLiAqLwo+Cj4gT3ZlcmFsbCBJIGxpa2UgdGhlIGNo YW5nZSBidXQgSSB0aGluayB5b3UgY291bGQgYXZvaWQgZXh0cmEgY2h1cm4gYnkKPiBrZWVwaW5n IHRoZSBuYW1lIG9mIGBmaWxlYCBhcyBpcyBhbmQgYWRkIGBzdHJ1Y3QgZmlsZSAqb3JpZ19maWxl YAo+IGluc3RlYWQgYXM6Cj4KPiArICAgICAgIHN0cnVjdCBmaWxlICpvcmlnX2ZpbGU7ICAgLyog bW1hcCgpLXNwZWNpZmllZCBvcmlnaW5hbCBmaWxlLiAqLwo+IC0gICAgICAgc3RydWN0IGZpbGUg KmZpbGU7Cj4gKyAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZTsgICAgICAvKiBNYXkgYmUgdXBkYXRl ZCBieSBtbWFwX3ByZXBhcmUuICovCj4KPiBUaGVuIG1hbnkgdXNlcyBvZiBtYXAtPmZpbGUgd291 bGQgc3RheSB1bmNoYW5nZWQuCgpJIGRpZG4ndCBhY3R1YWxseSB3YW50IHRvIGRvIHRoZSBjaHVy bnkgdmVyc2lvbiBvZiB0aGlzIGJ1dCB0aGUgcHJvYmxlbQp3aXRoIGRvaW5nIHNvbWV0aGluZyBl bHNlIGlzIHRoYXQgd291bGQgdGhlbiBjb250cmFkaWN0cyB3aGF0J3MgaW4Kdm1fYXJlYV9kZXNj OgoKc3RydWN0IHZtX2FyZWFfZGVzYyB7CgkvKiBJbW11dGFibGUgc3RhdGUuICovCgkuLi4KCXN0 cnVjdCBmaWxlICpmaWxlOyAvKiBNYXkgdmFyeSBmcm9tIHZtX2ZpbGUgaW4gc3RhY2tlZCBjYWxs ZXJzLiAqLwoJLi4uCgkvKiBNdXRhYmxlIGZpZWxkcy4gUG9wdWxhdGVkIHdpdGggaW5pdGlhbCBz dGF0ZS4gKi8KCS4uLgoJc3RydWN0IGZpbGUgKnZtX2ZpbGU7CgkuLi4KfTsKCkFuZCBzdWRkZW5s eSB3aGF0IGlzICdmaWxlJyB0aGVyZSAoaW5oZXJpdGVkIGZpbGUpIGlzIHRoZSBtb2RpZmlhYmxl IG9uZQpoZXJlIGFuZCBpdCdzIG1vcmUgY29uZnVzaW5nLgoKQXMgcGVyIHRoZSBjb21taXQgbXNn OgoKCVRyYWNrIHdoZXRoZXIgdGhpcyBuZWVkcyB0byBiZSBkb25lIGJ5IGFsaWduaW5nIG1tYXBf c3RhdGUgd2l0aAoJdm1fYXJlYV9kZXNjIGFuZCBzdG9yZSB0aGUgb3JpZ2luYWwgZmlsZSBpbiB0 aGUgbWFwLT5maWxlIGZpZWxkLCBrZWVwaW5nCgl0aGUgdXBkYXRlZCBmaWxlIGluIG1hcC0+dm1f ZmlsZS4KCkJ1dCBtYXliZSBJIG5lZWQgdG8gbWFrZSB0aGF0IGRlY2lzaW9uIGNsZWFyZXIgdGhl cmU/Cgo+Cj4gPiAgICAgICAgIHBncHJvdF90IHBhZ2VfcHJvdDsKPiA+Cj4gPiAgICAgICAgIC8q IFVzZXItZGVmaW5lZCBmaWVsZHMsIHBlcmhhcHMgdXBkYXRlZCBieSAubW1hcF9wcmVwYXJlKCku ICovCj4gPiBAQCAtNDMsOCArNDQsNiBAQCBzdHJ1Y3QgbW1hcF9zdGF0ZSB7Cj4gPgo+ID4gICAg ICAgICAvKiBEZXRlcm1pbmUgaWYgd2UgY2FuIGNoZWNrIEtTTSBmbGFncyBlYXJseSBpbiBtbWFw KCkgbG9naWMuICovCj4gPiAgICAgICAgIGJvb2wgY2hlY2tfa3NtX2Vhcmx5IDoxOwo+ID4gLSAg ICAgICAvKiBJZiAubW1hcF9wcmVwYXJlIGNoYW5nZWQgdGhlIGZpbGUsIHdlIGRvbid0IG5lZWQg dG8gcGluLiAqLwo+ID4gLSAgICAgICBib29sIGZpbGVfZG9lc250X25lZWRfZ2V0IDoxOwo+ID4g IH07Cj4gPgo+ID4gICNkZWZpbmUgTU1BUF9TVEFURShuYW1lLCBtbV8sIHZtaV8sIGFkZHJfLCBs ZW5fLCBwZ29mZl8sIGFub25fcGdvZmZfLCB2bWFfZmxhZ3NfLCBmaWxlXykgXAo+ID4gQEAgLTU4 LDYgKzU3LDcgQEAgc3RydWN0IG1tYXBfc3RhdGUgewo+ID4gICAgICAgICAgICAgICAgIC5wZ2xl biA9IFBIWVNfUEZOKGxlbl8pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4g ICAgICAgICAgICAgICAgIC52bWFfZmxhZ3MgPSB2bWFfZmxhZ3NfLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAgIC5maWxlID0gZmlsZV8sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gKyAgICAgICAgICAgICAg IC52bV9maWxlID0gZmlsZV8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ID4gICAgICAgICAgICAgICAgIC5wYWdlX3Byb3QgPSB2bWFfZmxhZ3NfdG9fcGFnZV9wcm90 KHZtYV9mbGFnc18pLCAgICAgICAgXAo+ID4gICAgICAgICB9Cj4gPgo+ID4gQEAgLTcwLDcgKzcw LDcgQEAgc3RydWN0IG1tYXBfc3RhdGUgewo+ID4gICAgICAgICAgICAgICAgIC52bWFfZmxhZ3Mg PSAobWFwXyktPnZtYV9mbGFncywgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gICAgICAg ICAgICAgICAgIC5wZ29mZiA9IChtYXBfKS0+cGdvZmYsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAgIC5hbm9uX3Bnb2ZmID0gKG1hcF8pLT5hbm9u X3Bnb2ZmLCAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gLSAgICAgICAgICAgICAgIC5maWxl ID0gKG1hcF8pLT5maWxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4g KyAgICAgICAgICAgICAgIC5maWxlID0gKG1hcF8pLT52bV9maWxlLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAgIC5wcmV2ID0gKG1hcF8pLT5wcmV2 LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gICAgICAgICAgICAgICAg IC5taWRkbGUgPSB2bWFfLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ID4gICAgICAgICAgICAgICAgIC5uZXh0ID0gKHZtYV8pID8gTlVMTCA6IChtYXBfKS0+bmV4 dCwgICAgICAgICAgICAgICAgICAgXAo+ID4gQEAgLTI0NDcsNyArMjQ0Nyw3IEBAIHZvaWQgbW1f ZHJvcF9hbGxfbG9ja3Moc3RydWN0IG1tX3N0cnVjdCAqbW0pCj4gPiAgICovCj4gPiAgc3RhdGlj IGJvb2wgYWNjb3VudGFibGVfbWFwcGluZyhzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwKQo+ID4gIHsK PiA+IC0gICAgICAgY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUgPSBtYXAtPmZpbGU7Cj4gPiArICAg ICAgIGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlID0gbWFwLT52bV9maWxlOwo+ID4KPiA+ICAgICAg ICAgLyoKPiA+ICAgICAgICAgICogaHVnZXRsYiBoYXMgaXRzIG93biBhY2NvdW50aW5nIHNlcGFy YXRlIGZyb20gdGhlIGNvcmUgVk0KPiA+IEBAIC0yNDk2LDcgKzI0OTYsNyBAQCBzdGF0aWMgdm9p ZCB2bXNfYWJvcnRfbXVubWFwX3ZtYXMoc3RydWN0IHZtYV9tdW5tYXBfc3RydWN0ICp2bXMsCj4g Pgo+ID4gIHN0YXRpYyB2b2lkIHVwZGF0ZV9rc21fZmxhZ3Moc3RydWN0IG1tYXBfc3RhdGUgKm1h cCkKPiA+ICB7Cj4gPiAtICAgICAgIG1hcC0+dm1hX2ZsYWdzID0ga3NtX3ZtYV9mbGFncyhtYXAt Pm1tLCBtYXAtPmZpbGUsIG1hcC0+dm1hX2ZsYWdzKTsKPiA+ICsgICAgICAgbWFwLT52bWFfZmxh Z3MgPSBrc21fdm1hX2ZsYWdzKG1hcC0+bW0sIG1hcC0+dm1fZmlsZSwgbWFwLT52bWFfZmxhZ3Mp Owo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIHZvaWQgc2V0X2Rlc2NfZnJvbV9tYXAoc3RydWN0IHZt X2FyZWFfZGVzYyAqZGVzYywKPiA+IEBAIC0yNTA2LDcgKzI1MDYsNyBAQCBzdGF0aWMgdm9pZCBz ZXRfZGVzY19mcm9tX21hcChzdHJ1Y3Qgdm1fYXJlYV9kZXNjICpkZXNjLAo+ID4gICAgICAgICBk ZXNjLT5lbmQgPSBtYXAtPmVuZDsKPiA+Cj4gPiAgICAgICAgIGRlc2MtPnBnb2ZmID0gbWFwLT5w Z29mZjsKPiA+IC0gICAgICAgZGVzYy0+dm1fZmlsZSA9IG1hcC0+ZmlsZTsKPiA+ICsgICAgICAg ZGVzYy0+dm1fZmlsZSA9IG1hcC0+dm1fZmlsZTsKPiA+ICAgICAgICAgZGVzYy0+dm1hX2ZsYWdz ID0gbWFwLT52bWFfZmxhZ3M7Cj4gPiAgICAgICAgIGRlc2MtPnBhZ2VfcHJvdCA9IG1hcC0+cGFn ZV9wcm90Owo+ID4gIH0KPiA+IEBAIC0yNTg2LDYgKzI1ODYsMTAgQEAgc3RhdGljIGludCBfX21t YXBfc2V0dXAoc3RydWN0IG1tYXBfc3RhdGUgKm1hcCwgc3RydWN0IHZtX2FyZWFfZGVzYyAqZGVz YywKPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0aWMgYm9vbCBtYXBf c2FtZV9maWxlKHN0cnVjdCBtbWFwX3N0YXRlICptYXApCj4gPiArewo+ID4gKyAgICAgICByZXR1 cm4gbWFwLT52bV9maWxlID09IG1hcC0+ZmlsZTsKPiA+ICt9Cj4gPgo+ID4gIHN0YXRpYyBpbnQg X19tbWFwX25ld19maWxlX3ZtYShzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwLAo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ID4gQEAg LTI1OTMsMjAgKzI1OTcsMjMgQEAgc3RhdGljIGludCBfX21tYXBfbmV3X2ZpbGVfdm1hKHN0cnVj dCBtbWFwX3N0YXRlICptYXAsCj4gPiAgICAgICAgIHN0cnVjdCB2bWFfaXRlcmF0b3IgKnZtaSA9 IG1hcC0+dm1pOwo+ID4gICAgICAgICBpbnQgZXJyb3I7Cj4gPgo+ID4gLSAgICAgICB2bWEtPnZt X2ZpbGUgPSBtYXAtPmZpbGU7Cj4gPiAtICAgICAgIGlmICghbWFwLT5maWxlX2RvZXNudF9uZWVk X2dldCkKPiA+IC0gICAgICAgICAgICAgICBnZXRfZmlsZShtYXAtPmZpbGUpOwo+ID4gKyAgICAg ICB2bWEtPnZtX2ZpbGUgPSBtYXAtPnZtX2ZpbGU7Cj4gPiArICAgICAgIGlmIChtYXBfc2FtZV9m aWxlKG1hcCkpCj4gPiArICAgICAgICAgICAgICAgZ2V0X2ZpbGUobWFwLT52bV9maWxlKTsKPiA+ Cj4gPiAtICAgICAgIGlmICghbWFwLT5maWxlLT5mX29wLT5tbWFwKQo+ID4gKyAgICAgICBpZiAo IW1hcC0+dm1fZmlsZS0+Zl9vcC0+bW1hcCkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gMDsK PiA+Cj4gPiAgICAgICAgIGVycm9yID0gbW1hcF9maWxlKHZtYS0+dm1fZmlsZSwgdm1hKTsKPiA+ ICsgICAgICAgbWFwLT52bV9maWxlID0gdm1hLT52bV9maWxlOwo+ID4gKwo+ID4gICAgICAgICBp ZiAoZXJyb3IpIHsKPiA+ICAgICAgICAgICAgICAgICBVTk1BUF9TVEFURSh1bm1hcCwgdm1pLCB2 bWEsIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1fZW5kLAo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hcC0+cHJldiwgbWFwLT5uZXh0KTsKPiA+IC0gICAgICAgICAgICAgICBmcHV0KHZt YS0+dm1fZmlsZSk7Cj4gPiAtICAgICAgICAgICAgICAgdm1hLT52bV9maWxlID0gTlVMTDsKPiA+ ICsgICAgICAgICAgICAgICBpZiAobWFwX3NhbWVfZmlsZShtYXApKQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgZnB1dChtYXAtPnZtX2ZpbGUpOwo+ID4KPiA+ICsgICAgICAgICAgICAgICB2 bWEtPnZtX2ZpbGUgPSBOVUxMOwo+ID4gICAgICAgICAgICAgICAgIHZtYV9pdGVyX3NldCh2bWks IHZtYS0+dm1fZW5kKTsKPiA+ICAgICAgICAgICAgICAgICAvKiBVbmRvIGFueSBwYXJ0aWFsIG1h cHBpbmcgZG9uZSBieSBhIGRldmljZSBkcml2ZXIuICovCj4gPiAgICAgICAgICAgICAgICAgdW5t YXBfcmVnaW9uKCZ1bm1hcCk7Cj4gPiBAQCAtMjYyMyw3ICsyNjMwLDYgQEAgc3RhdGljIGludCBf X21tYXBfbmV3X2ZpbGVfdm1hKHN0cnVjdCBtbWFwX3N0YXRlICptYXAsCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAhdm1hX2ZsYWdzX3Rlc3QoJm1hcC0+dm1hX2ZsYWdzLCBWTUFfTUFZV1JJ VEVfQklUKSAmJgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgdm1hX3Rlc3Qodm1hLCBWTUFf TUFZV1JJVEVfQklUKSk7Cj4gPgo+ID4gLSAgICAgICBtYXAtPmZpbGUgPSB2bWEtPnZtX2ZpbGU7 Cj4gPiAgICAgICAgIG1hcC0+dm1hX2ZsYWdzID0gdm1hLT5mbGFnczsKPiA+Cj4gPiAgICAgICAg IHJldHVybiAwOwo+ID4gQEAgLTI2MzEsNyArMjYzNyw3IEBAIHN0YXRpYyBpbnQgX19tbWFwX25l d19maWxlX3ZtYShzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwLAo+ID4KPiA+ICBzdGF0aWMgdm9pZCBt YXBfc2V0X2Fub24oc3RydWN0IG1tYXBfc3RhdGUgKm1hcCkKPiA+ICB7Cj4gPiAtICAgICAgIG1h cC0+ZmlsZSA9IE5VTEw7Cj4gPiArICAgICAgIG1hcC0+dm1fZmlsZSA9IE5VTEw7Cj4gPiAgICAg ICAgIG1hcC0+dm1fb3BzID0gTlVMTDsKPiA+ICAgICAgICAgbWFwLT5wZ29mZiA9IG1hcC0+YWRk ciA+PiBQQUdFX1NISUZUOwo+ID4gIH0KPiA+IEBAIC0yNjQzLDcgKzI2NDksNyBAQCBzdGF0aWMg Ym9vbCBtYXBfaXNfcHJpdmF0ZShjb25zdCBzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwKQo+ID4KPiA+ ICBzdGF0aWMgYm9vbCBtYXBfaXNfYW5vbihjb25zdCBzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwKQo+ ID4gIHsKPiA+IC0gICAgICAgcmV0dXJuIG1hcF9pc19wcml2YXRlKG1hcCkgJiYgIW1hcC0+Zmls ZTsKPiA+ICsgICAgICAgcmV0dXJuIG1hcF9pc19wcml2YXRlKG1hcCkgJiYgIW1hcC0+dm1fZmls ZTsKPiA+ICB9Cj4gPgo+ID4gIC8qCj4gPiBAQCAtMjY4OCw3ICsyNjk0LDcgQEAgc3RhdGljIGlu dCBfX21tYXBfbmV3X3ZtYShzdHJ1Y3QgbW1hcF9zdGF0ZSAqbWFwLCBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKip2bWFwLAo+ID4gICAgICAgICB9Cj4gPgo+ID4gICAgICAgICAvKiBJbnZva2UgY2Fs bGJhY2tzLiAqLwo+ID4gLSAgICAgICBpZiAobWFwLT5maWxlKQo+ID4gKyAgICAgICBpZiAobWFw LT52bV9maWxlKQo+ID4gICAgICAgICAgICAgICAgIGVycm9yID0gX19tbWFwX25ld19maWxlX3Zt YShtYXAsIHZtYSk7Cj4gPiAgICAgICAgIGVsc2UgaWYgKCFpc19hbm9uKQo+ID4gICAgICAgICAg ICAgICAgIGVycm9yID0gc2htZW1femVyb19zZXR1cCh2bWEpOwo+ID4gQEAgLTI3OTcsMTEgKzI4 MDMsMTUgQEAgc3RhdGljIGludCBjYWxsX21tYXBfcHJlcGFyZShzdHJ1Y3QgbW1hcF9zdGF0ZSAq bWFwLAo+ID4gICAgICAgICBpbnQgZXJyOwo+ID4KPiA+ICAgICAgICAgLyogSW52b2tlIHRoZSBo b29rLiAqLwo+ID4gLSAgICAgICBlcnIgPSB2ZnNfbW1hcF9wcmVwYXJlKG1hcC0+ZmlsZSwgZGVz Yyk7Cj4gPiArICAgICAgIGVyciA9IHZmc19tbWFwX3ByZXBhcmUobWFwLT52bV9maWxlLCBkZXNj KTsKPiA+ICAgICAgICAgaWYgKGVycikKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ ID4KPiA+IC0gICAgICAgLyogSXQncyBpbnZhbGlkIGZvciBtbWFwX3ByZXByYXJlIGhvb2tzIHRv IGNsZWFyIHZtX29wcy4gKi8KPiA+ICsgICAgICAgLyogVXBkYXRlIGZpcnN0IHNvIGZpbGUgcmVm Y291bnQgdHJhY2tlZCBjb3JyZWN0bHkuICovCj4gPiArICAgICAgIGlmIChkZXNjLT52bV9maWxl ICE9IG1hcC0+dm1fZmlsZSkKPiA+ICsgICAgICAgICAgICAgICBtYXAtPnZtX2ZpbGUgPSBkZXNj LT52bV9maWxlOwo+ID4gKwo+ID4gKyAgICAgICAvKiBJdCdzIGludmFsaWQgZm9yIG1tYXBfcHJl cGFyZSBob29rcyB0byBjbGVhciB2bV9vcHMuICovCj4gPiAgICAgICAgIGlmICghZGVzYy0+dm1f b3BzKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4KPiA+IEBAIC0yODEx LDEwICsyODIxLDYgQEAgc3RhdGljIGludCBjYWxsX21tYXBfcHJlcGFyZShzdHJ1Y3QgbW1hcF9z dGF0ZSAqbWFwLAo+ID4KPiA+ICAgICAgICAgLyogVXBkYXRlIGZpZWxkcyBwZXJtaXR0ZWQgdG8g YmUgY2hhbmdlZC4gKi8KPiA+ICAgICAgICAgbWFwLT5wZ29mZiA9IGRlc2MtPnBnb2ZmOwo+ID4g LSAgICAgICBpZiAoZGVzYy0+dm1fZmlsZSAhPSBtYXAtPmZpbGUpIHsKPiA+IC0gICAgICAgICAg ICAgICBtYXAtPmZpbGVfZG9lc250X25lZWRfZ2V0ID0gdHJ1ZTsKPiA+IC0gICAgICAgICAgICAg ICBtYXAtPmZpbGUgPSBkZXNjLT52bV9maWxlOwo+ID4gLSAgICAgICB9Cj4gPiAgICAgICAgIG1h cC0+dm1hX2ZsYWdzID0gZGVzYy0+dm1hX2ZsYWdzOwo+ID4gICAgICAgICBtYXAtPnBhZ2VfcHJv dCA9IGRlc2MtPnBhZ2VfcHJvdDsKPiA+ICAgICAgICAgLyogVXNlci1kZWZpbmVkIGZpZWxkcy4g Ki8KPiA+IEBAIC0yODI2LDcgKzI4MzIsNyBAQCBzdGF0aWMgaW50IGNhbGxfbW1hcF9wcmVwYXJl KHN0cnVjdCBtbWFwX3N0YXRlICptYXAsCj4gPiAgICAgICAgICAqIGFub255bW91cyBtYXBwaW5n cy4gUmF0aGVyIHRoYW4gYWxsb3dpbmcgdGhlc2UgbWFwcGluZ3MgdG8gYmUgb2RkCj4gPiAgICAg ICAgICAqIG91dGxpZXJzLCBzaW1wbHkgbWFrZSB0aGVtIHRydWx5IGFub255bW91cy4KPiA+ICAg ICAgICAgICovCj4gPiAtICAgICAgIGlmIChtYXBfaXNfcHJpdmF0ZShtYXApICYmIGZpbGVfaXNf ZGV2X3plcm8obWFwLT5maWxlKSkKPiA+ICsgICAgICAgaWYgKG1hcF9pc19wcml2YXRlKG1hcCkg JiYgZmlsZV9pc19kZXZfemVybyhtYXAtPnZtX2ZpbGUpKQo+ID4gICAgICAgICAgICAgICAgIG1h cF9zZXRfYW5vbihtYXApOwo+ID4KPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiBAQCAtMjg0NSw3 ICsyODUxLDcgQEAgc3RhdGljIHZvaWQgc2V0X3ZtYV91c2VyX2RlZmluZWRfZmllbGRzKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+ID4gICAqLwo+ID4gIHN0YXRpYyBib29sIGNhbl9zZXRf a3NtX2ZsYWdzX2Vhcmx5KHN0cnVjdCBtbWFwX3N0YXRlICptYXApCj4gPiAgewo+ID4gLSAgICAg ICBzdHJ1Y3QgZmlsZSAqZmlsZSA9IG1hcC0+ZmlsZTsKPiA+ICsgICAgICAgc3RydWN0IGZpbGUg KmZpbGUgPSBtYXAtPnZtX2ZpbGU7Cj4gPgo+ID4gICAgICAgICAvKiBBbm9ueW1vdXMgbWFwcGlu Z3MgaGF2ZSBubyBkcml2ZXIgd2hpY2ggY2FuIGNoYW5nZSB0aGVtLiAqLwo+ID4gICAgICAgICBp ZiAoIWZpbGUpCj4gPiBAQCAtMjg2OCw2ICsyODc0LDIwIEBAIHN0YXRpYyBib29sIGNhbl9zZXRf a3NtX2ZsYWdzX2Vhcmx5KHN0cnVjdCBtbWFwX3N0YXRlICptYXApCj4gPiAgICAgICAgIHJldHVy biBmYWxzZTsKPiA+ICB9Cj4gPgo+ID4gK3N0YXRpYyB2b2lkIHB1dF9tYXAoc3RydWN0IG1tYXBf c3RhdGUgKm1hcCkKPgo+IG5pdDogbWF5YmUgcHV0X21hcF9maWxlKCkgdG8gYmUgbW9yZSBzcGVj aWZpYz8KClN1cmUgd2lsbCBjaGFuZ2UuCgo+Cj4gPiArewo+ID4gKyAgICAgICAvKgo+ID4gKyAg ICAgICAgKiBBbiBlcnJvciBvY2N1cnJlZCBvciB0aGUgVk1BIHdhcyBtZXJnZWQuCj4KPiBJdCdz IGEgYml0IHdlaXJkIHRoYXQgdGhlIGZ1bmN0aW9uIGV4cGxhaW5zIHdoZW4gaXQgaXMgYmVpbmcg dXNlZC4KPiBIYXZpbmcgYW4gYXBwcm9wcmlhdGUgY29tbWVudCBhdCB0aGUgY2FsbCBzaXRlIHNl ZW1zIGJldHRlciB0byBtZS4KCkFjayB3aWxsIGNoYW5nZS4KCj4KPiA+ICsgICAgICAgICoKPiA+ ICsgICAgICAgICogSWYgdGhlIGZpbGUgd2FzIGNoYW5nZWQgYnkgdGhlIGRyaXZlciAod2hpY2gg aXMgcmVxdWlyZWQgdG8gaW5jcmVtZW50Cj4gPiArICAgICAgICAqIHRoZSByZXBsYWNlbWVudCBm aWxlJ3MgcmVmZXJlbmNlIGNvdW50KSwgZHJvcCBpdHMgcmVmZXJlbmNlIGNvdW50Lgo+ID4gKyAg ICAgICAgKgo+ID4gKyAgICAgICAgKiBPbiBlcnJvciwgdGhlIGNhbGxlciBhbHdheXMgZHJvcHMg dGhlIG9yaWdpbmFsIGZpbGUgcmVnYXJkbGVzcy4KPiA+ICsgICAgICAgICovCj4gPiArICAgICAg IGlmIChtYXAtPnZtX2ZpbGUgJiYgIW1hcF9zYW1lX2ZpbGUobWFwKSkKPiA+ICsgICAgICAgICAg ICAgICBmcHV0KG1hcC0+dm1fZmlsZSk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB1bnNpZ25l ZCBsb25nIF9fbW1hcF9yZWdpb24oc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRk ciwKPiA+ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdm1hX2ZsYWdzX3Qgdm1h X2ZsYWdzLAo+ID4gICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGdvZmYsIHN0cnVjdCBs aXN0X2hlYWQgKnVmKQo+ID4gQEAgLTI5MjIsNyArMjk0MiwxMCBAQCBzdGF0aWMgdW5zaWduZWQg bG9uZyBfX21tYXBfcmVnaW9uKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFkZHIs Cj4gPgo+ID4gICAgICAgICBfX21tYXBfY29tcGxldGUoJm1hcCwgdm1hKTsKPiA+Cj4gPiAtICAg ICAgIGlmIChoYXZlX21tYXBfcHJlcGFyZSAmJiBhbGxvY2F0ZWRfbmV3KSB7Cj4gPiArICAgICAg IGlmICghYWxsb2NhdGVkX25ldykgewo+ID4gKyAgICAgICAgICAgICAgIC8qIE1lcmdlZCwgc28g bmVlZCB0byBkcm9wIHJlZmNvdW50LiAqLwo+ID4gKyAgICAgICAgICAgICAgIHB1dF9tYXAoJm1h cCk7Cj4gPiArICAgICAgIH0gZWxzZSBpZiAoaGF2ZV9tbWFwX3ByZXBhcmUpIHsKPiA+ICAgICAg ICAgICAgICAgICBlcnJvciA9IG1tYXBfYWN0aW9uX2NvbXBsZXRlKHZtYSwgJmRlc2MuYWN0aW9u LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyppc19j b21wYXQ9Ki9mYWxzZSk7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQo+ID4gQEAgLTI5 MzYsMTMgKzI5NTksNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX21tYXBfcmVnaW9uKHN0cnVj dCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFkZHIsCj4gPiAgICAgICAgIGlmIChtYXAuY2hh cmdlZCkKPiA+ICAgICAgICAgICAgICAgICB2bV91bmFjY3RfbWVtb3J5KG1hcC5jaGFyZ2VkKTsK PiA+ICBhYm9ydF9tdW5tYXA6Cj4gPiAtICAgICAgIC8qCj4gPiAtICAgICAgICAqIFRoaXMgaW5k aWNhdGVzIHRoYXQgLm1tYXBfcHJlcGFyZSBoYXMgc2V0IGEgbmV3IGZpbGUsIGRpZmZlcmluZyBm cm9tCj4gPiAtICAgICAgICAqIGRlc2MtPnZtX2ZpbGUuIEJ1dCBzaW5jZSB3ZSdyZSBhYm9ydGlu ZyB0aGUgb3BlcmF0aW9uLCBvbmx5IHRoZQo+ID4gLSAgICAgICAgKiBvcmlnaW5hbCBmaWxlIHdp bGwgYmUgY2xlYW5lZCB1cC4gRW5zdXJlIHdlIGNsZWFuIHVwIGJvdGguCj4gPiAtICAgICAgICAq Lwo+ID4gLSAgICAgICBpZiAobWFwLmZpbGVfZG9lc250X25lZWRfZ2V0KQo+ID4gLSAgICAgICAg ICAgICAgIGZwdXQobWFwLmZpbGUpOwo+ID4gKyAgICAgICBwdXRfbWFwKCZtYXApOwo+ID4gICAg ICAgICB2bXNfYWJvcnRfbXVubWFwX3ZtYXMoJm1hcC52bXMsICZtYXAubWFzX2RldGFjaCk7Cj4g PiAgICAgICAgIHJldHVybiBlcnJvcjsKPiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvbW0vdm1hLmgg Yi9tbS92bWEuaAo+ID4gaW5kZXggZTk3YmQyZGZhNzg2Li5mMTVmYWE4M2YzZDYgMTAwNjQ0Cj4g PiAtLS0gYS9tbS92bWEuaAo+ID4gKysrIGIvbW0vdm1hLmgKPiA+IEBAIC0zOTQsOCArMzk0LDEw IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb21wYXRfc2V0X3ZtYV9mcm9tX2Rlc2Moc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsCj4gPgo+ID4gICAgICAgICAvKiBNdXRhYmxlIGZpZWxkcy4gUG9w dWxhdGVkIHdpdGggaW5pdGlhbCBzdGF0ZS4gKi8KPiA+ICAgICAgICAgdm1hX3NldF9wZ29mZih2 bWEsIGRlc2MtPnBnb2ZmKTsKPiA+IC0gICAgICAgaWYgKGRlc2MtPnZtX2ZpbGUgIT0gdm1hLT52 bV9maWxlKQo+ID4gLSAgICAgICAgICAgICAgIHZtYV9zZXRfZmlsZSh2bWEsIGRlc2MtPnZtX2Zp bGUpOwo+ID4gKyAgICAgICBpZiAoZGVzYy0+dm1fZmlsZSAhPSB2bWEtPnZtX2ZpbGUpIHsKPiA+ ICsgICAgICAgICAgICAgICBmcHV0KHZtYS0+dm1fZmlsZSk7Cj4gPiArICAgICAgICAgICAgICAg dm1hLT52bV9maWxlID0gZGVzYy0+dm1fZmlsZTsKPiA+ICsgICAgICAgfQo+ID4gICAgICAgICB2 bWEtPmZsYWdzID0gZGVzYy0+dm1hX2ZsYWdzOwo+ID4gICAgICAgICB2bWEtPnZtX3BhZ2VfcHJv dCA9IGRlc2MtPnBhZ2VfcHJvdDsKPiA+Cj4gPgo+ID4gLS0KPiA+IDIuNTUuMAo+ID4KCi0tCkNo ZWVycywgTG9yZW56bwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1y aXNjdgo=