If I read correctly, Calls which are read only operations do not cost any gas. Calls can have computing operations. Like currency conversion, loops, etc.
I could for example host a contract with a call that attempts to find number of primes between 1 and 1^100. Any node making a call to this contract would be doing it for free, and spending an awful amount of CPU.
What is the safe guard that Ethereum has put in place to prevent such abuse?