- ocapa = capa_get(capa->lc_uid, capa->lc_op, capa->lc_mdsid,
- capa->lc_ino, FILTER_CAPA, NULL, NULL, NULL);
-verify:
- if (ocapa) {
- /* fo_capa_lock protects capa too */
- spin_lock(&filter->fo_capa_lock);
- if (capa->lc_keyid == ocapa->c_capa.lc_keyid) {
- rc = memcmp(capa, &ocapa->c_capa, sizeof(*capa));
- } else if (ocapa->c_bvalid &&
- capa->lc_keyid == ocapa->c_bkeyid) {
- rc = memcmp(capa->lc_hmac, ocapa->c_bhmac,
- sizeof(capa->lc_hmac));
- } else {
- /* ocapa is obsolete */
- capa_put(ocapa, FILTER_CAPA);
- spin_unlock(&filter->fo_capa_lock);
- goto new_capa;
+ cfs_spin_lock(&capa_lock);
+ cfs_list_for_each_entry(k, &filter->fo_capa_keys, k_list) {
+ if (k->k_key.lk_seq == seq) {
+ keys_ready = 1;
+ if (k->k_key.lk_keyid == capa_keyid(capa)) {
+ key = k->k_key;
+ key_found = 1;
+ break;
+ }