]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cls_rbd: throw error if set_features mask included non-mutable feature 8240/head
authorJason Dillaman <dillaman@redhat.com>
Mon, 21 Mar 2016 13:32:08 +0000 (09:32 -0400)
committerJason Dillaman <dillaman@redhat.com>
Mon, 21 Mar 2016 13:32:08 +0000 (09:32 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/cls/rbd/cls_rbd.cc

index 14d19f2db6d6eb51aed80ed0829328527120d326..036ad8a6830f3fb622e234d9ff4ea736bc5b5e46 100644 (file)
@@ -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,