Re: [PATCH] fs: dlm: Remove impossible to hit if statement

From: Al Viro
Date: Sun Nov 05 2023 - 19:13:39 EST


On Sun, Nov 05, 2023 at 11:11:25PM +0000, Al Viro wrote:
> Sure, if you hit even a single iteration of that loop, you will
> have memb guaranteed to be non-NULL. Therefore, to complete the
> proof you only need to consider what happens if there is not
> a single iteration. Which is to say, what happens if the list
> is empty. Well, either memb is uninitialized, or there is an
> intialization somewhere upstream. Declaration is not far before
> that loop, and it is
> struct dlm_member *memb = NULL;
> Er... So for that change to be correct you need to show that
> the list (ls->ls_nodes) can not be empty here. Unfortunately,
> it looks like it very much can be empty, seeing that this
> is apparently the only place where elements are added to
> the list in question. So on the very first call it will
> hit your "impossible to hit" case. Which leads to...
>
> * the patch had apparently never been tested.

Looking at the uses of ->ls_nodes, I wonder if xarray would be
a better fit here. Might be interesting to investigate...