- if (rkey && bkey && capa_key_cmp(&rkey->k_key, &bkey->k_key) < 0) {
- tmp = rkey;
- rkey = bkey;
- bkey = tmp;
- }
-
- if ((!rkey || rkey->k_key.lk_keyid != capa->lc_keyid) &&
- (!bkey || bkey->k_key.lk_keyid != capa->lc_keyid)) {
- spin_unlock(&filter->fo_capa_lock);
- GOTO(out, rc = -ESTALE);
- }
-
- LASSERT(rkey);
-
- memcpy(&tcapa, capa, sizeof(tcapa));
- tcapa.lc_keyid = rkey->k_key.lk_keyid;
- memcpy(hmac_key, rkey->k_key.lk_key, sizeof(hmac_key));
- spin_unlock(&filter->fo_capa_lock);
-
- capa_hmac(filter->fo_capa_hmac, hmac_key, &tcapa);
-
- /* store in capa cache */
- ocapa = capa_renew(capa, FILTER_CAPA);
- if (!ocapa)
- GOTO(out, rc = -ENOMEM);
-
- if (bkey) {
- spin_lock(&filter->fo_capa_lock);
- tcapa.lc_keyid = bkey->k_key.lk_keyid;
- memcpy(hmac_key, bkey->k_key.lk_key, sizeof(hmac_key));
- ocapa->c_bkeyid = bkey->k_key.lk_keyid;
- spin_unlock(&filter->fo_capa_lock);