So why not just a enlarge-without-copying call? Call it "krealloc_no_copy", which tries to enlarge a memory reservation if it can do it without copying, and returns null if that turned out to be impossible -- in that situation the network guys can fall back to allocating a separate metadata block.