On Fri, Feb 21, 2020 at 02:06:26PM +0100, Paolo Bonzini wrote: > On 21/02/20 13:59, Stefan Hajnoczi wrote: > > 1. It doesn't crash if the node is currently not on a list. > > 2. It clears the node's linked list pointers so that future linked > > list operations (like QLIST_SAFE_REMOVE()) aren't accidentally > > performed on stale pointers. > > > > The node has a long lifespan and will be inserted into ready_lists > > multiple times. We need to safely remove it from ready_list to protect > > against a corruption the next time the node is inserted into a > > ready_list again: > > Ah, so the one I singled out is for (2) (we know the node is currently > on a list), while the one below is for (1). Would it make sense to move > (2) to Q*_REMOVE_*? We can do it separately after this pull request. Extending all Q*_REMOVE*() macros to clear the linked list pointers is nice. I'll send a follow-up patch. Stefan