Re: [ 64/66] GFS2: Test bufdata with buffer locked andgfs2_log_lock held

From: Ben Hutchings
Date: Sun Nov 25 2012 - 08:11:54 EST


On Wed, 2012-11-14 at 20:11 -0800, Greg Kroah-Hartman wrote:
> 3.6-stable review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: Benjamin Marzinski <bmarzins@xxxxxxxxxx>
>
> commit 96e5d1d3adf56f1c7eeb07258f6a1a0a7ae9c489 upstream.
>
> In gfs2_trans_add_bh(), gfs2 was testing if a there was a bd attached to the
> buffer without having the gfs2_log_lock held. It was then assuming it would
> stay attached for the rest of the function. However, without either the log
> lock being held of the buffer locked, __gfs2_ail_flush() could detach bd at any
> time. This patch moves the locking before the test. If there isn't a bd
> already attached, gfs2 can safely allocate one and attach it before locking.
> There is no way that the newly allocated bd could be on the ail list,
> and thus no way for __gfs2_ail_flush() to detach it.
>
> Signed-off-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx>
> Signed-off-by: Steven Whitehouse <swhiteho@xxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
[...]

Is this needed for any earlier versions? It looks applicable to 3.2
(with minor changes).

Ben.

--
Ben Hutchings
Never attribute to conspiracy what can adequately be explained by stupidity.

Attachment: signature.asc
Description: This is a digitally signed message part