]> git.apps.os.sepia.ceph.com Git - ceph-client.git/commitdiff
rbd: fix reference leak in rbd_do_op()
authorAlex Elder <elder@inktank.com>
Fri, 9 Nov 2012 14:43:15 +0000 (08:43 -0600)
committerAlex Elder <elder@inktank.com>
Mon, 19 Nov 2012 23:37:49 +0000 (17:37 -0600)
This commit introduced a bug:
    4634246d rbd: consolidate rbd_do_op() calls

When a read request is being issued, the snapshot context provided
isn't needed.  But that snap context pointer was acquired in
rbd_rq_fn() and it carries with it a reference to that structure.
So before discarding it, the reference needs to be dropped.

Signed-off-by: Alex Elder <elder@inktank.com>
drivers/block/rbd.c

index 835153ee8fe3bf7a427b290a97371047a0c4cce4..b86f5e5d7b1c2520072a2371373907dffcc3ab08 100644 (file)
@@ -1333,6 +1333,7 @@ static int rbd_do_op(struct request *rq,
        } else {
                opcode = CEPH_OSD_OP_READ;
                flags = CEPH_OSD_FLAG_READ;
+               ceph_put_snap_context(snapc);
                snapc = NULL;
                snapid = rbd_dev->spec->snap_id;
                payload_len = 0;