From 127c26f02ca529cb26e92d8148ab0091c1d718e8 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Mon, 21 Mar 2016 09:32:08 -0400 Subject: [PATCH] cls_rbd: throw error if set_features mask included non-mutable feature Signed-off-by: Jason Dillaman --- src/cls/rbd/cls_rbd.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/cls/rbd/cls_rbd.cc b/src/cls/rbd/cls_rbd.cc index 14d19f2db6d6..036ad8a6830f 100644 --- a/src/cls/rbd/cls_rbd.cc +++ b/src/cls/rbd/cls_rbd.cc @@ -402,15 +402,14 @@ int set_features(cls_method_context_t hctx, bufferlist *in, bufferlist *out) return r; } - uint64_t changed_features = (orig_features ^ features) & mask; - uint64_t enabled_features = changed_features & features; + uint64_t enabled_features = features & mask; if ((enabled_features & RBD_FEATURES_MUTABLE) != enabled_features) { CLS_ERR("Attempting to enable immutable feature: %" PRIu64, enabled_features & ~RBD_FEATURES_MUTABLE); return -EINVAL; } - uint64_t disabled_features = changed_features & orig_features; + uint64_t disabled_features = ~features & mask; uint64_t disable_mask = (RBD_FEATURES_MUTABLE | RBD_FEATURES_DISABLE_ONLY); if ((disabled_features & disable_mask) != disabled_features) { CLS_ERR("Attempting to disable immutable feature: %" PRIu64, -- 2.47.3