Re: 2.6.29-git13: Reported regressions from 2.6.28

From: Chris Friesen
Date: Wed Apr 22 2009 - 15:34:57 EST


Hugh Dickins wrote:
On Mon, 20 Apr 2009, Chris Friesen wrote:

For anonymous mappings, the older kernels put the starting address of the VMA
(from the point of view of the app) as the offset. Until the recent change,
new kernels still did this for most VMAs, but the stack offset was a 64-bit
value with no obvious relation to the VMA start address.

No, what they put there was something that in most cases matched the
starting address of the VMA; but try moving that VMA with mremap (and
an old /proc/<pid>/maps!) and you'll see that the "offset" remained
unchanged even when the starting address of the VMA was changed.

(The offset remaining constant so that rmap can locate the VMA's pages
and unmap them, despite their being mapped at different virtual
addresses in parent and child after a move in one of them.)

... so I think your app was indeed already broken, wasn't it?

It's also unclear why you'd want to use the offset field for the
starting address of the VMA, when /proc/<pid>/maps already shows
the starting address of the VMA. I think you've more to tell us!

Yeah, given the above the app was broken. We just didn't run into any cases where the assumption caused any problems.

Also, it's not so much that we were relying on the offset value for anything, so much as we were parsing the file and had made some assumptions about valid offsets for anonymous memory.

Anyways, we'll fix it going forward to simply ignore the offset for anonymous memory.

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