Re: MM deadlock [was: Re: arca-vm-8...]

Andrea Arcangeli
1999-01-26T02:19:22Z

On Mon, 25 Jan 1999, Stephen C. Tweedie wrote:

> --- mm/filemap.c.~1~ Thu Jan 21 10:26:41 1999
> +++ mm/filemap.c Mon Jan 25 12:59:38 1999
> @@ -125,7 +125,7 @@
> struct page * page;
> int count;
>
> - count = (limit << 1) >> priority;
> + count = limit >> priority;
>
> page = mem_map + clock;
> do {
> @@ -147,7 +147,6 @@
> clock = page - mem_map;
> }
>
> - count--;

OK to remove the << 1 and to move count-- after checking referenced.

> referenced = test_and_clear_bit(PG_referenced, &page->flags);
>
> if (PageLocked(page))
> @@ -159,6 +158,8 @@
> /* We can't free pages unless there's just one user */
> if (atomic_read(&page->count) != 1)
> continue;
> +
> + count--;

but this is plain bogus. When your machine will reach 0 freeable pages
(and that happens a bit before to kill the process because OOM) you'll get
an infinite loop in shrink_mmap().

Andrea Arcangeli

--
To unsubscribe, send a message with 'unsubscribe linux-mm my@address'
in the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/