Is it safe to modify host memory after cudaMemcpyAsync?

Is it safe to modify pinned host memory after calling cudaMemcpyAsync to copy it to the device?

Since the copy operation can happen at any time on the GPU, without any synchronization w.r.t. the host, doesn’t any modification to this memory after an Async H2D transfer is queued result in undefined GPU memory?

What happens if the host memory is freed before the H2D copy?

I realized that if the page-locked memory is freed with cudaFreeHost or unregistered with cudaHostUnregister, there must be a synchronization to ensure it is not in use on the GPU. So calling “free” on registered host memory is probably dangerous.