[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20231105235743.GS1957730@ZenIV>
Date: Sun, 5 Nov 2023 23:57:43 +0000
From: Al Viro <viro@...iv.linux.org.uk>
To: Joey Pabalinas <joeypabalinas@...il.com>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] fs: dlm: Remove impossible to hit if statement
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...
Powered by blists - more mailing lists