Data hazard - solution
Usually solved by data or register forwarding (bypassing or short-circuiting).
How? The data selected is not really used in ID but in the next stage: ALU.
Forwarding works as follows:
ALU result from EX/MEM buffer is always fed back to ALU input latches.
If the forwarding hardware detects that its source operand has a new value, the logic selects the newer result than the value read from the register file.