changed allocations from GFP_ATOMIC to GFP_KERNEL