lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 17 Jul 2023 21:59:11 -0600
From:   Yu Zhao <yuzhao@...gle.com>
To:     Yin Fengwei <fengwei.yin@...el.com>
Cc:     linux-mm@...ck.org, linux-kernel@...r.kernel.org,
        akpm@...ux-foundation.org, willy@...radead.org, david@...hat.com,
        ryan.roberts@....com, shy828301@...il.com
Subject: Re: [RFC PATCH v2 3/3] mm: mlock: update mlock_pte_range to handle
 large folio

On Mon, Jul 17, 2023 at 8:07 PM Yin Fengwei <fengwei.yin@...el.com> wrote:
>
> On 7/17/23 16:12, Yin Fengwei wrote:
> >
> > On 7/17/23 08:35, Yu Zhao wrote:
> >> On Sun, Jul 16, 2023 at 6:00 PM Yin, Fengwei <fengwei.yin@...el.com> wrote:
> >>>
> >>> On 7/15/2023 2:06 PM, Yu Zhao wrote:
> >>>> There is a problem here that I didn't have the time to elaborate: we
> >>>> can't mlock() a folio that is within the range but not fully mapped
> >>>> because this folio can be on the deferred split queue. When the split
> >>>> happens, those unmapped folios (not mapped by this vma but are mapped
> >>>> into other vmas) will be stranded on the unevictable lru.
> >>>
> >>> This should be fine unless I missed something. During large folio split,
> >>> the unmap_folio() will be migrate(anon)/unmap(file) folio. Folio will be
> >>> munlocked in unmap_folio(). So the head/tail pages will be evictable always.
> >>
> >> It's close but not entirely accurate: munlock can fail on isolated folios.
> >
> > I suppose normal 4K page can hit this problem also and following patch could
> > fix it:
> No. This patch is not necessary as unevictable folio will not be picked up by
> page reclaim. It's not possible to munlock the isolated folio from lru list.
>
> The possible cases I am ware are: page_migrate, madvise and damon_pa_pageout and
> lru_gen_look_around. The first three already handle this case correctly by call
>   folio_putback_lru().
>
> If folio is isolated, the split_folio() will just fail. So looks we are fine
> for this corner case. Let me know if I miss something here.

The race is between isolation and munlock -- split_folio() only fails
if a folio is still isolated when it tries to freeze its refcnt, e.g.,
cpu 1      cpu 2
           split_folio()
isolation  unmap_folio()
putback
           freeze refcnt

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ