Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*


 610         mutex_destroy(&cm->cm_lock);
 611         cv_destroy(&cm->cm_cv);
 612         kmem_free(cm, sizeof (crypto_minor_t));
 613 
 614         return (0);
 615 }
 616 
 617 static crypto_minor_t *
 618 crypto_hold_minor(minor_t minor)
 619 {
 620         crypto_minor_t *cm;
 621         kcf_lock_withpad_t *mp;
 622 
 623         if (minor > crypto_minors_table_count)
 624                 return (NULL);
 625 
 626         mp = &crypto_locks[CPU_SEQID];
 627         mutex_enter(&mp->kl_lock);
 628 
 629         if ((cm = crypto_minors[minor - 1]) != NULL) {
 630                 atomic_add_32(&cm->cm_refcnt, 1);
 631         }
 632         mutex_exit(&mp->kl_lock);
 633         return (cm);
 634 }
 635 
 636 static void
 637 crypto_release_minor(crypto_minor_t *cm)
 638 {
 639         if (atomic_add_32_nv(&cm->cm_refcnt, -1) == 0) {
 640                 cv_signal(&cm->cm_cv);
 641         }
 642 }
 643 
 644 /*
 645  * Build a list of functions and other information for the provider, pd.
 646  */
 647 static void
 648 crypto_build_function_list(crypto_function_list_t *fl, kcf_provider_desc_t *pd)
 649 {
 650         crypto_ops_t *ops;
 651         crypto_digest_ops_t *digest_ops;
 652         crypto_cipher_ops_t *cipher_ops;
 653         crypto_mac_ops_t *mac_ops;
 654         crypto_sign_ops_t *sign_ops;
 655         crypto_verify_ops_t *verify_ops;
 656         crypto_dual_ops_t *dual_ops;
 657         crypto_random_number_ops_t *random_number_ops;
 658         crypto_session_ops_t *session_ops;
 659         crypto_object_ops_t *object_ops;




 610         mutex_destroy(&cm->cm_lock);
 611         cv_destroy(&cm->cm_cv);
 612         kmem_free(cm, sizeof (crypto_minor_t));
 613 
 614         return (0);
 615 }
 616 
 617 static crypto_minor_t *
 618 crypto_hold_minor(minor_t minor)
 619 {
 620         crypto_minor_t *cm;
 621         kcf_lock_withpad_t *mp;
 622 
 623         if (minor > crypto_minors_table_count)
 624                 return (NULL);
 625 
 626         mp = &crypto_locks[CPU_SEQID];
 627         mutex_enter(&mp->kl_lock);
 628 
 629         if ((cm = crypto_minors[minor - 1]) != NULL) {
 630                 atomic_inc_32(&cm->cm_refcnt);
 631         }
 632         mutex_exit(&mp->kl_lock);
 633         return (cm);
 634 }
 635 
 636 static void
 637 crypto_release_minor(crypto_minor_t *cm)
 638 {
 639         if (atomic_dec_32_nv(&cm->cm_refcnt) == 0) {
 640                 cv_signal(&cm->cm_cv);
 641         }
 642 }
 643 
 644 /*
 645  * Build a list of functions and other information for the provider, pd.
 646  */
 647 static void
 648 crypto_build_function_list(crypto_function_list_t *fl, kcf_provider_desc_t *pd)
 649 {
 650         crypto_ops_t *ops;
 651         crypto_digest_ops_t *digest_ops;
 652         crypto_cipher_ops_t *cipher_ops;
 653         crypto_mac_ops_t *mac_ops;
 654         crypto_sign_ops_t *sign_ops;
 655         crypto_verify_ops_t *verify_ops;
 656         crypto_dual_ops_t *dual_ops;
 657         crypto_random_number_ops_t *random_number_ops;
 658         crypto_session_ops_t *session_ops;
 659         crypto_object_ops_t *object_ops;