Smiley (Gary Oldman) convinces Toby Esterhase (David Dencik) to reveal the address where the Soviet attaché double agent has been sending MI6's secrets from. It turns out that all four suspects have been complicit in sending information to Moscow, under the belief that the secrets they were sending was of little to no use by the Russians and that the attaché's information would help convince the CIA to work more openly with MI6. However, Bill Haydon (Colin Firth) is actually a Russian mole and has been sending more sensitive information. Haydon was sleeping with Smiley's wife, so he was in a position to know Pridauex had been shot in Hungary before the rest of the suspects.
Smiley sets a trap for the mole and has Ricki Tarr (Tom Hardy) send a cable from Paris saying he has information that is important to the top levels of British intelligence. Haydon is the one who arrives at the house and is revealed as the mole. Haydon admits that his affair with Smiley's wife was to confuse Smiley's feelings about the case. Jim Pridauex (Mark Strong) takes a rifle and shoots Haydon (it is suggested they may have been more than close friends). Smiley is shown as returning to the Circus as the new "C" replacing the previous controller (John Hurt) and his replacement Percy Alleline (Toby Jones).
(It is shown in a flashback that Irina (Svetlana Khodchenkova) who Ricki wanted to get out of Russia is the woman who was shot in front of Pridauex whilst he was in captivity, although Smiley wouldn't know this directly. Also Karla is believed to be the potential double agent that Smiley went to India to recruit).
Thanks Ali D!