Whamcloud - gitweb
LU-14629 sec: forbid file rename from enc to unencrypted dir
[fs/lustre-release.git] / lustre / mdd / mdd_dir.c
index e0c1842..0fb1374 100644 (file)
@@ -2804,6 +2804,15 @@ static int mdd_rename_sanity_check(const struct lu_env *env,
            (pattr->la_projid != tpattr->la_projid)))
                RETURN(-EXDEV);
 
+       /* we prevent an encrypted file from being renamed
+        * into an unencrypted dir
+        */
+       if ((cattr->la_valid & LA_FLAGS &&
+            cattr->la_flags & LUSTRE_ENCRYPT_FL) &&
+           !(tpattr->la_valid & LA_FLAGS &&
+             tpattr->la_flags & LUSTRE_ENCRYPT_FL))
+               RETURN(-EXDEV);
+
        rc = mdd_may_delete(env, src_pobj, pattr, sobj, cattr, NULL, 1, 0);
        if (rc)
                RETURN(rc);