A stuck canister becomes not upgradeable only or not callable at all?

Suppose a canister gets stuck by calling method f() that calls a method of another canister that never returns. Does it imply that calling f() again will be immediately stuck?

I read somewhere that such a stuck in a method canister becomes unupgradeable. Is it true that in addition to having become unupgradeable, its methods (like f()) become not callable anymore (stuck)?

Only if you implement some locking mechanism that says that only one call of f() can be in progress at a time