backport zsmalloc from 3.7 kernel