Additional info: Scanned the crypto-swap partition with badblocks -w, no errors found.swapoff'd the crypto swap partition, and swapon'd an all-zero 2.6GB file (unencrypted file on unencrypted non-LVM partition, doesn't go through device mapper). When I ran the allocation test again, it swapped out normally, no lockup.