update kernel_linear, change read func