Re: [RFC PATCH 03/15] mm/vmalloc: introduce new vrealloc() call and its subsidiary reach analog

From: Roman Penyaev
Date: Thu Jan 10 2019 - 05:08:55 EST


On 2019-01-09 17:50, Matthew Wilcox wrote:
On Wed, Jan 09, 2019 at 05:40:13PM +0100, Roman Penyaev wrote:
Basically vrealloc() repeats glibc realloc() with only one big difference:
old area is not freed, i.e. caller is responsible for calling vfree() in
case of successfull reallocation.

Ouch. Don't call it the same thing when you're providing such different
semantics. I agree with you that the new semantics are useful ones,
I just want it called something else. Maybe vcopy()? vclone()?

vclone(). I like vclone(). But Linus does not like this reallocation
under the hood for epoll (where this vrealloc() should have been used),
so seems that won't be needed at all.


+ * Do not forget to call vfree() passing old address. But careful,
+ * calling vfree() from interrupt will cause vfree_deferred() call,
+ * which in its turn uses freed address as a temporal pointer for a

"temporary", not temporal.

Ha! Now I got the difference. Thanks, Mathew :)


+ * llist element, i.e. memory will be corrupted.

--
Roman