If a cache line is in the 'M' (Modified) state and another cache requests the data for a read, what must happen before the data is supplied to the requesting cache?
A block in the 'M' state is dirty (inconsistent with main memory). When another cache requests this block, the cache holding the 'M' copy intercepts the request and must first write the modified data back to main memory. This makes the block clean again and ensures that main memory is updated before the data is shared with the requesting cache.