On Fri, 24 Jan 2014, Li Zefan wrote:
update_flag() routine uses heap only when spread_flag_changed is true. Otherwise heap isn't used, but is allocated and freed unnecessarily.
but harmless
It's not harmless, if heap_init() fails with -ENOMEM then the write fails even though it may not be for memory_spread_page or memory_spread_slab, which is the minority of the callers of this function.