Re: find_get_swapcache_page() question

Hugh Dickins (hugh@veritas.com)
Tue, 28 Aug 2001 17:27:52 +0100 (BST)


On Tue, 28 Aug 2001, Rik van Riel wrote:
> On Tue, 28 Aug 2001, Hugh Dickins wrote:
>
> > if (!PageSwapCache(found))
> > BUG();
> > if (found->mapping != &swapper_space)
> > BUG();
> > are not safe, since there may a concurrent remove_from_swap_cache(),
> > either from try_to_unuse() or from Rik's new vm_swap_full() deletion.
> > Those tests would be safe if the page were locked, but it's not.
>
> vm_swap_full() is called with the page locked,
> remove_from_swap_cache() also seems to want the
> page locked...

Certainly (I seem to recall composing a comment to that effect
recently :-)! Sorry for being unclear, I meant that those tests
in lookup_swap_cache() are made without the page being locked
by lookup_swap_cache() or its caller (and I'm not proposing
that the page should be locked, but the unsafe tests removed).

Hugh

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/