Lines Matching refs:kcop
78 struct kernel_crypt_op kcop; member
553 item->result = crypto_run(&pcr->fcrypt, &item->kcop); in cryptask_routine()
693 static int crypto_async_run(struct crypt_priv *pcr, struct kernel_crypt_op *kcop) in crypto_async_run() argument
697 if (unlikely(kcop->cop.flags & COP_FLAG_NO_ZC)) in crypto_async_run()
720 memcpy(&item->kcop, kcop, sizeof(struct kernel_crypt_op)); in crypto_async_run()
736 struct kernel_crypt_op *kcop) in crypto_async_fetch() argument
750 memcpy(kcop, &item->kcop, sizeof(struct kernel_crypt_op)); in crypto_async_fetch()
765 static int fill_kcop_from_cop(struct kernel_crypt_op *kcop, struct fcrypt *fcr) in fill_kcop_from_cop() argument
767 struct crypt_op *cop = &kcop->cop; in fill_kcop_from_cop()
777 kcop->ivlen = cop->iv ? ses_ptr->cdata.ivsize : 0; in fill_kcop_from_cop()
778 kcop->digestsize = 0; /* will be updated during operation */ in fill_kcop_from_cop()
782 kcop->task = current; in fill_kcop_from_cop()
783 kcop->mm = current->mm; in fill_kcop_from_cop()
786 rc = copy_from_user(kcop->iv, cop->iv, kcop->ivlen); in fill_kcop_from_cop()
789 kcop->ivlen, rc, cop->iv); in fill_kcop_from_cop()
798 static int fill_cop_from_kcop(struct kernel_crypt_op *kcop, struct fcrypt *fcr) in fill_cop_from_kcop() argument
802 if (kcop->digestsize) { in fill_cop_from_kcop()
803 ret = copy_to_user(kcop->cop.mac, in fill_cop_from_kcop()
804 kcop->hash_output, kcop->digestsize); in fill_cop_from_kcop()
808 if (kcop->ivlen && kcop->cop.flags & COP_FLAG_WRITE_IV) { in fill_cop_from_kcop()
809 ret = copy_to_user(kcop->cop.iv, in fill_cop_from_kcop()
810 kcop->iv, kcop->ivlen); in fill_cop_from_kcop()
817 static int kcop_from_user(struct kernel_crypt_op *kcop, in kcop_from_user() argument
820 if (unlikely(copy_from_user(&kcop->cop, arg, sizeof(kcop->cop)))) in kcop_from_user()
823 return fill_kcop_from_cop(kcop, fcr); in kcop_from_user()
826 static int kcop_to_user(struct kernel_crypt_op *kcop, in kcop_to_user() argument
831 ret = fill_cop_from_kcop(kcop, fcr); in kcop_to_user()
837 if (unlikely(copy_to_user(arg, &kcop->cop, sizeof(kcop->cop)))) { in kcop_to_user()
931 struct kernel_crypt_op kcop; in cryptodev_ioctl() local
999 if (unlikely(ret = kcop_from_user(&kcop, fcr, arg))) { in cryptodev_ioctl()
1004 ret = crypto_run(fcr, &kcop); in cryptodev_ioctl()
1010 return kcop_to_user(&kcop, fcr, arg); in cryptodev_ioctl()
1025 if (unlikely(ret = kcop_from_user(&kcop, fcr, arg))) in cryptodev_ioctl()
1028 return crypto_async_run(pcr, &kcop); in cryptodev_ioctl()
1030 ret = crypto_async_fetch(pcr, &kcop); in cryptodev_ioctl()
1034 return kcop_to_user(&kcop, fcr, arg); in cryptodev_ioctl()
1098 static int compat_kcop_from_user(struct kernel_crypt_op *kcop, in compat_kcop_from_user() argument
1105 compat_to_crypt_op(&compat_cop, &kcop->cop); in compat_kcop_from_user()
1107 return fill_kcop_from_cop(kcop, fcr); in compat_kcop_from_user()
1110 static int compat_kcop_to_user(struct kernel_crypt_op *kcop, in compat_kcop_to_user() argument
1116 ret = fill_cop_from_kcop(kcop, fcr); in compat_kcop_to_user()
1121 crypt_op_to_compat(&kcop->cop, &compat_cop); in compat_kcop_to_user()
1138 struct kernel_crypt_op kcop; in cryptodev_compat_ioctl() local
1173 ret = compat_kcop_from_user(&kcop, fcr, arg); in cryptodev_compat_ioctl()
1177 ret = crypto_run(fcr, &kcop); in cryptodev_compat_ioctl()
1181 return compat_kcop_to_user(&kcop, fcr, arg); in cryptodev_compat_ioctl()
1198 if (unlikely(ret = compat_kcop_from_user(&kcop, fcr, arg))) in cryptodev_compat_ioctl()
1201 return crypto_async_run(pcr, &kcop); in cryptodev_compat_ioctl()
1203 ret = crypto_async_fetch(pcr, &kcop); in cryptodev_compat_ioctl()
1207 return compat_kcop_to_user(&kcop, fcr, arg); in cryptodev_compat_ioctl()