Is mmc0 unrelated? I see:
[ 2.171395] mmc0: tuning execution failed: -5
[ 2.171396] mmc0: error -5 whilst initialising SD card
Without seeing actual code involved, assuming it isn’t mmc0 access itself being modified, I have to think that modifying a section of code in an unrelated interrupt handler may have violated some sort of access or timing requirement. The BH itself would normally be created (and scheduled for later execution) by an uninterruptible IRQ section, but the BH itself would be something not timing critical. If the part of the code has some sort of synchronization issue, and either isn’t really qualified to be a bottom half, or else is BH but has the possibility of something like a priority inversion, perhaps it could harm either this interrupt handler or a seemingly unrelated IRQ handler. If mmc0 is unrelated to this (meaning not even related to your modification), then there is still something seriously wrong occurring (mmc0 is kind of critical and training during boot should eliminate that error).
You probably will need to post the full code for anyone to know what is going on, but if it is a timing issue, then it might still be very difficult to find even if the code involved really is BH.