It's a long time since I was active hereabouts, but the bot report and your flurry of updates make me think that you should step back, slow down, and look more carefully at the precedents here. IIRC, the main problem is that parts of the swap_info_struct can still be in use from before while you're wanting to set up new values. Observe how alloc_swap_info() may return a fresh or an old allocation. Observe how enable_swap_info() is called after getting swapon_mutex late in swapon(), once past all possiblities of error. I expect that your new zeromap needs to be taking the same care as is taken with swap_map and cluster_info: to be safe, follow their example in both swapon() and swapoff(). Hugh