How do GPS satellites refresh their clocks
Clock errors are not corrected, they are compensated in two steps.

1. Error determination

The GPS control segment uses reference receivers in well known locations to determine the actual orbital elements and the clock error of space vehicles. The reference for position is the WGS84 reference frame, for time it is the international atomic time. Even the smallest effects like continental drift and relativistic time dilatation are taken into account.

2. Error Compensation

The onboard clock (in fact, the SV Z-Count, see IS-GPS-200 3.3.4) is not tuned, slewed or reset to compensate for the error. Citing IS-GPS, 20.3.4.2:


  Each SV operates on its own SV time


Instead, the offset between UTC and  this spacecraft's clock ("GPS-Time") is broadcast in the navigation message (see IS-GPS 20.3.3.3.1.8). This does not only include the current offset, but also different forecasts ("fit intervals", 20.3.4.4). Normally, only the highly precise short term forecast is relevant, the others would be used if the control segment is inoperable and no uplink is possible.

Likewise, the position error (deviation from nominal orbit) is left uncorrected (this would deplete precious fuel), but is broadcast to receivers by uploading ephemeris data (orbital elements) to the spacecraft.

Time of flight is no issue for the uplink, as the new fit interval data has already been determined in the previous step.

The actual compensation is then done in the receiver (user segment). It applies corrections when relating the observed signal/code phase of different SV.



Exceptional situations

Sometimes, old spacecraft behave in unexpected ways, for example their clocks begin to drift unpredictably. AGI has a website with performance data of onboard clocks. You can see, that USA-151s clock (sending PRN28) is a little bit shaky and needs frequent compensations.

If a clock goes wild or a powered maneuver makes the SV unusable for navigation the SV sends an "inoperable flag" in its navigation message and is ignored by end users' receivers.