On Mon, Dec 03, 2018 at 11:39:54PM -0800, Alison Schofield wrote: > +void vma_put_encrypt_ref(struct vm_area_struct *vma) > +{ > + if (vma_keyid(vma)) > + if (refcount_dec_and_test(&encrypt_count[vma_keyid(vma)])) { > + mktme_map_lock(); > + mktme_map_free_keyid(vma_keyid(vma)); > + mktme_map_unlock(); > + } This violates CodingStyle > +} > +void key_put_encrypt_ref(int keyid) > +{ > + if (refcount_dec_and_test(&encrypt_count[keyid])) { > + mktme_map_lock(); That smells like it wants to use refcount_dec_and_lock() instead. > + mktme_map_free_keyid(keyid); > + mktme_map_unlock(); > + } > +} Also, if you write that like: if (!refcount_dec_and_lock(&encrypt_count[keyid], &lock)) return; you loose an indent level.