]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xen-blkback: don't get ref for each queue
authorBob Liu <bob.liu@oracle.com>
Fri, 9 Sep 2016 19:44:08 +0000 (15:44 -0400)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 14 Sep 2016 01:03:22 +0000 (18:03 -0700)
xen_blkif_get() for each queue is useless, and introduce a bug.

If there is I/O inflight, xen_blkif_disconnect() will return busy and
xen_blkif_put() not be called.
Then even if I/O completed, the xen_blkif_put() can't free all resources.

Orabug: 24661443
Signed-off-by: Bob Liu <bob.liu@oracle.com>
drivers/block/xen-blkback/xenbus.c

index 26aa080e243cb59fa2ba4f2ba39d41f644c46265..b51e55a992fab5081a374887a6e21f107c4629b2 100644 (file)
@@ -159,7 +159,6 @@ static int xen_blkif_alloc_rings(struct xen_blkif *blkif)
                init_waitqueue_head(&ring->shutdown_wq);
                ring->blkif = blkif;
                ring->st_print = jiffies;
-               xen_blkif_get(blkif);
        }
 
        return 0;
@@ -296,7 +295,6 @@ static int xen_blkif_disconnect(struct xen_blkif *blkif)
                BUG_ON(ring->free_pages_num != 0);
                BUG_ON(ring->persistent_gnt_c != 0);
                WARN_ON(i != (XEN_BLKIF_REQS_PER_PAGE * blkif->nr_ring_pages));
-               xen_blkif_put(blkif);
        }
        blkif->nr_ring_pages = 0;
        /*