> + if (atomic_dec_and_test(&client->users)) > + wake_up(&client->wait); > + wait_event(client->wait, atomic_read(&client->users) == 0); I think this is vulnerable to the race we fixed up all over the place a few months ago, where wait_event runs between the atomic_dec_and_test() and the wake_up(). - R.