Op amp differential amplifier output level too high
When the current is higher than the threshold value, the comparator gives out a digital signal 0/1 that is added to the buck feedback. So it is very logic that buck will decrease the output voltage, the comparator will give 0, then the buck will rise its voltage, then the current will rise,... it will oscillate.
Instead of the comparator you should use opamp gain by adding a feedback resistor U303A, pins 1,2. Perhaps you do need to swap both differnce amp. and comparator inputs, so that you can amplify just above threshold value.
If it matters (I don't think it is) your difference amplifier has an asymmetric input impedance. It has near 1M for IN+ and near 20k for IN-.



simulate this circuit &ndash; Schematic created using CircuitLab
I have introduced yet another diode to avoid the saturation if the output is below conducting voltage for D1.
EDIT:
Your opamp has 9.8mV offset, amplifying this for 50x times you get cca. 500mV output with no signal present (worst case).