From 7abafb89f69dbd0d6cb875eaf79154ce2a321611 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Thu, 17 May 2018 13:11:09 -0400 Subject: [PATCH] cls/rbd: prevent creating image with internal feature bits enabled Fixes: http://tracker.ceph.com/issues/24165 Signed-off-by: Jason Dillaman --- src/cls/rbd/cls_rbd.cc | 6 ++++++ src/test/cls_rbd/test_cls_rbd.cc | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/cls/rbd/cls_rbd.cc b/src/cls/rbd/cls_rbd.cc index 4bdcfcf0ceb..03a10b5f3c4 100644 --- a/src/cls/rbd/cls_rbd.cc +++ b/src/cls/rbd/cls_rbd.cc @@ -360,6 +360,12 @@ int create(cls_method_context_t hctx, bufferlist *in, bufferlist *out) omap_vals["snap_seq"] = snap_seqbl; omap_vals["create_timestamp"] = create_timestampbl; + if ((features & RBD_FEATURES_INTERNAL) != 0ULL) { + CLS_ERR("Attempting to set internal feature: %" PRIu64, + static_cast(features & RBD_FEATURES_INTERNAL)); + return -EINVAL; + } + if (features & RBD_FEATURE_DATA_POOL) { if (data_pool_id == -1) { CLS_ERR("data pool not provided with feature enabled"); diff --git a/src/test/cls_rbd/test_cls_rbd.cc b/src/test/cls_rbd/test_cls_rbd.cc index 2132d56b031..abdb7a9797d 100644 --- a/src/test/cls_rbd/test_cls_rbd.cc +++ b/src/test/cls_rbd/test_cls_rbd.cc @@ -371,6 +371,8 @@ TEST_F(TestClsRbd, create) ASSERT_EQ(0, create_image(&ioctx, oid, size, order, RBD_FEATURE_DATA_POOL, object_prefix, 123)); ASSERT_EQ(0, ioctx.remove(oid)); + ASSERT_EQ(-EINVAL, create_image(&ioctx, oid, size, order, + RBD_FEATURE_OPERATIONS, object_prefix, -1)); ASSERT_EQ(-EINVAL, create_image(&ioctx, oid, size, order, RBD_FEATURE_DATA_POOL, object_prefix, -1)); ASSERT_EQ(-EINVAL, create_image(&ioctx, oid, size, order, 0, object_prefix, -- 2.39.5