I'm trying to understand what happens to the TCP Congestion Window (Cwnd) if the transfer rate is limited by the Receive Window (Rwnd). I know that the transfer rate is the minimum of Rwnd and Cwnd. I also know that Cwnd increases for each ACK received. Suppose the receive buffer is very small, so Rwnd always stays very low, but all the packets are received and ACKed. Does this mean that Cwnd just keeps increasing forever? Is there some limit to it?
It depends to which mechanism you are using, and yes the Cwnd keep increasing till your first packet drop happens, you can read more about slow start and other mechanism in the links below.
Basic slow-start The algorithm begins in the exponential growth phase initially with a Congestion Window Size (CWND) of 1, 2 or 10 segments and increases it by one Segment Size (SS) for each new ACK received. If the receiver sends an ACK for every segment, this behavior effectively doubles the window size each round trip of the network. If the receiver supports delayed ACKs, the rate of increase is lower, but still increases by a minimum of one MSS each round-trip time. This behavior continues until the congestion window size (CWND) reaches the size of the receiver's advertised window or until a loss occurs.