> Suggest using guard()() and scoped_guard() throughout this series > instead of manual lock/unlock and up/down. That will simplify the code > and reduce the chance of silly bugs where a code path misses an > unlock/down. This is an interesting suggestion. I have not really considered using guard()/scoped_guard(). I personally prefer regular lock/unlock/goto error, IMO the code is more readable this way, but I may revisit this in the future. Also, at least in mm guards are not used, i.e. `git grep scoped_guard mm` returns no results.