In software defined networking (SDN), a controller may manage several SDN switches to be cost-effective while a switch may demand management service from multiple controllers for fault tolerance. The controller placement problem (CPP) is to determine the locations of SDN controllers to minimize the total deployment cost subject to constraints such as controller-switch latency, inter-controller latency, and controller capacity. This problem is challenging especially in interconnected geo-distributed SDN networks. Existing centralized solutions do not well adapt to network dynamics. This paper proposes several distributed mechanisms based on the exact potential game. These mechanisms dynamically adapt to network faults such as link and controller failures. The simulation result shows that these mechanisms need fewer controllers than an existing approach in static networks. When links or controllers may fail, our mechanisms still perform better while only a part of the network nodes is affected. The latter is impossible in non-adaptive approaches.