• Alex Elder's avatar
    rbd: fix leak of format 2 snapshot names · 6e584f52
    Alex Elder authored
    When the snapshot context for an rbd device gets updated (or the
    initial one is recorded) a a list of snapshot structures is created
    to represent them, one entry per snapshot.  Each entry includes a
    dynamically-allocated copy of the snapshot name.
    
    Currently the name is allocated in rbd_snap_create(), as a duplicate
    of the passed-in name.
    
    For format 1 images, the snapshot name provided is just a pointer to
    an existing name.  But for format 2 images, the passed-in name is
    already dynamically allocated, and in the the process of duplicating
    it here we are leaking the passed-in name.
    
    Fix this by dynamically allocating the name for format 1 snapshots
    also, and then stop allocating a duplicate in rbd_snap_create().
    
    Change rbd_dev_v1_snap_info() so none of its parameters is
    side-effected unless it's going to return success.
    
    This is part of:
        http://tracker.ceph.com/issues/4803Signed-off-by: default avatarAlex Elder <elder@inktank.com>
    Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
    6e584f52
rbd.c 128 KB