return NULL;
 }
 
-static int snap_by_name(struct rbd_device *rbd_dev, const char *snap_name)
+static struct rbd_snap *snap_by_name(struct rbd_device *rbd_dev,
+                                       const char *snap_name)
 {
-
        struct rbd_snap *snap;
 
-       list_for_each_entry(snap, &rbd_dev->snaps, node) {
-               if (!strcmp(snap_name, snap->name)) {
-                       rbd_dev->spec->snap_id = snap->id;
-                       rbd_dev->mapping.size = snap->size;
-                       rbd_dev->mapping.features = snap->features;
-
-                       return 0;
-               }
-       }
+       list_for_each_entry(snap, &rbd_dev->snaps, node)
+               if (!strcmp(snap_name, snap->name))
+                       return snap;
 
-       return -ENOENT;
+       return NULL;
 }
 
 static int rbd_dev_set_mapping(struct rbd_device *rbd_dev)
 {
-       int ret;
-
        if (!memcmp(rbd_dev->spec->snap_name, RBD_SNAP_HEAD_NAME,
                    sizeof (RBD_SNAP_HEAD_NAME))) {
                rbd_dev->spec->snap_id = CEPH_NOSNAP;
                rbd_dev->mapping.size = rbd_dev->header.image_size;
                rbd_dev->mapping.features = rbd_dev->header.features;
-               ret = 0;
        } else {
-               ret = snap_by_name(rbd_dev, rbd_dev->spec->snap_name);
-               if (ret < 0)
-                       goto done;
+               struct rbd_snap *snap;
+
+               snap = snap_by_name(rbd_dev, rbd_dev->spec->snap_name);
+               if (!snap)
+                       return -ENOENT;
+               rbd_dev->spec->snap_id = snap->id;
+               rbd_dev->mapping.size = snap->size;
+               rbd_dev->mapping.features = snap->features;
                rbd_dev->mapping.read_only = true;
        }
        set_bit(RBD_DEV_FLAG_EXISTS, &rbd_dev->flags);
 
-done:
-       return ret;
+       return 0;
 }
 
 static void rbd_header_free(struct rbd_image_header *header)