]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
rbd: protect read of snapshot sequence number
authorJosh Durgin <josh.durgin@dreamhost.com>
Mon, 5 Dec 2011 18:47:13 +0000 (10:47 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 26 Nov 2012 19:38:10 +0000 (11:38 -0800)
(cherry picked from commit 403f24d3d51760a8b9368d595fa5f48c309f1a0f)

This is updated whenever a snapshot is added or deleted, and the
snapc pointer is changed with every refresh of the header.

Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
Reviewed-by: Alex Elder <elder@dreamhost.com>
Reviewed-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/rbd.c

index c1f770131654500eb8d4c58c0f04cd8159023107..ff224baf0ff62d16a02fbe686d18d6098f901dc2 100644 (file)
@@ -1683,7 +1683,9 @@ static int rbd_header_add_snap(struct rbd_device *dev,
        if (ret < 0)
                return ret;
 
-       dev->header.snapc->seq =  new_snapid;
+       down_write(&dev->header_rwsem);
+       dev->header.snapc->seq = new_snapid;
+       up_write(&dev->header_rwsem);
 
        return 0;
 bad: