char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
int r = add_fscrypt_key(key, sizeof(key), keyid);
if (r < 0) {
- goto err;
+ // The key was not added, so keyid is not populated and there is
+ // nothing to remove.
+ return r;
}
// set dummy encryption policy
memcpy(policy.master_key_identifier, keyid, FSCRYPT_KEY_IDENTIFIER_SIZE);
r = ll_set_fscrypt_policy_v2(root.get(), policy);
if (r < 0) {
+ ldout(cct, 0) << __func__ << "(): failed to set dummy encryption policy: r=" << r << dendl;
goto err;
}
memcpy(key_spec.u.identifier, keyid, FSCRYPT_KEY_IDENTIFIER_SIZE);
arg.removal_status_flags = 0;
arg.key_spec = key_spec;
- r = remove_fscrypt_key(&arg);
+ // Preserve the original failure; don't mask it with the removal result.
+ int r2 = remove_fscrypt_key(&arg);
+ if (r2 < 0) {
+ ldout(cct, 0) << __func__ << "(): failed to remove fscrypt key: r=" << r2 << dendl;
+ }
return r;
}
#endif