Re: [RFC 1/2] mm: additional page lock debugging

From: Sasha Levin
Date: Tue Dec 31 2013 - 11:42:40 EST


On 12/31/2013 11:26 AM, Peter Zijlstra wrote:
On Mon, Dec 30, 2013 at 10:22:02PM -0500, Sasha Levin wrote:

I really want to use lockdep here, but I'm not really sure how to handle locks which live
for a rather long while instead of being locked and unlocked in the same function like
most of the rest of the kernel. (Cc Ingo, PeterZ).

Uh what? Lockdep doesn't care about which function locks and unlocks a
particular lock. Nor does it care how long its held for.

Sorry, I messed up trying to explain that.

There are several places in the code which lock a large amount of pages, something like:

for (i = 0; i < (1 << order); i++)
lock_page(&pages[i]);


This triggers two problems:

- lockdep complains about deadlock since we try to lock another page while one is already
locked. I can clear that by allowing page locks to nest within each other, but that seems
wrong and we'll miss actual deadlock cases.

- We may leave back to userspace with pages still locked. This is valid behaviour but lockdep
doesn't like that.


Thanks,
Sasha

--
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/