Locks are a classic data structure for concurrent programming. We introduce a type system to ensure that names of the asynchronous π-calculus are used as locks. Our calculus also features a construct to deallocate a lock once we know that it will never be acquired again. Typability guarantees two properties: deadlock-freedom, that is, no acquire operation on a lock waits forever; and leak-freedom, that is, all locks are eventually deallocated.We leverage the simplicity of our typing discipline to study the induced typed behavioural equivalence. After defining barbed equivalence, we introduce a sound labelled bisimulation, which makes it possible to establish equivalence between programs that manipulate and deallocate locks. P dl def = ℓ 1 (x). (ℓ 1 x | ℓ 2 x ) | ℓ 2 (y). (ℓ 1 y | ℓ 2 y ).