Re: [patch 0/9] buffered write deadlock fix

From: Andrew Morton
Date: Tue Jan 30 2007 - 18:21:47 EST


On Tue, 30 Jan 2007 12:55:58 -0800
Andrew Morton <akpm@xxxxxxxx> wrote:

> y'know, four or five years back I fixed this bug by doing
>
> current->locked_page = page;
>
> in the write() code, and then teaching the pagefault code to avoid locking
> the same page. Patch below.
>
> But then evil mean Hugh pointed out that the patch is still vulnerable to
> ab/ba deadlocking so I dropped it.

And he was right, of course. Task A holds file a's i_mutex and takes a
fault against file b's page. Task B holds file b's i_mutex and takes a
fault against file a's page. Drat.

I wonder if there's a sane way of preventing that.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/