Lines Matching refs:err
254 int err; in preserve_fpsimd_context() local
259 err = __copy_to_user(ctx->vregs, fpsimd->vregs, sizeof(fpsimd->vregs)); in preserve_fpsimd_context()
260 __put_user_error(fpsimd->fpsr, &ctx->fpsr, err); in preserve_fpsimd_context()
261 __put_user_error(fpsimd->fpcr, &ctx->fpcr, err); in preserve_fpsimd_context()
264 __put_user_error(FPSIMD_MAGIC, &ctx->head.magic, err); in preserve_fpsimd_context()
265 __put_user_error(sizeof(struct fpsimd_context), &ctx->head.size, err); in preserve_fpsimd_context()
267 return err ? -EFAULT : 0; in preserve_fpsimd_context()
273 int err; in read_fpsimd_context() local
280 err = __copy_from_user(fpsimd->vregs, &(user->fpsimd->vregs), in read_fpsimd_context()
282 __get_user_error(fpsimd->fpsr, &(user->fpsimd->fpsr), err); in read_fpsimd_context()
283 __get_user_error(fpsimd->fpcr, &(user->fpsimd->fpcr), err); in read_fpsimd_context()
285 return err ? -EFAULT : 0; in read_fpsimd_context()
291 int err; in restore_fpsimd_context() local
293 err = read_fpsimd_context(&fpsimd, user); in restore_fpsimd_context()
294 if (err) in restore_fpsimd_context()
295 return err; in restore_fpsimd_context()
308 int err = 0; in preserve_fpmr_context() local
310 __put_user_error(FPMR_MAGIC, &ctx->head.magic, err); in preserve_fpmr_context()
311 __put_user_error(sizeof(*ctx), &ctx->head.size, err); in preserve_fpmr_context()
312 __put_user_error(current->thread.uw.fpmr, &ctx->fpmr, err); in preserve_fpmr_context()
314 return err; in preserve_fpmr_context()
320 int err = 0; in restore_fpmr_context() local
325 __get_user_error(fpmr, &user->fpmr->fpmr, err); in restore_fpmr_context()
326 if (!err) in restore_fpmr_context()
329 return err; in restore_fpmr_context()
335 int err = 0; in preserve_poe_context() local
337 __put_user_error(POE_MAGIC, &ctx->head.magic, err); in preserve_poe_context()
338 __put_user_error(sizeof(*ctx), &ctx->head.size, err); in preserve_poe_context()
339 __put_user_error(ua_state->por_el0, &ctx->por_el0, err); in preserve_poe_context()
341 return err; in preserve_poe_context()
348 int err = 0; in restore_poe_context() local
353 __get_user_error(por_el0, &(user->poe->por_el0), err); in restore_poe_context()
354 if (!err) in restore_poe_context()
357 return err; in restore_poe_context()
364 int err = 0; in preserve_sve_context() local
380 __put_user_error(SVE_MAGIC, &ctx->head.magic, err); in preserve_sve_context()
382 &ctx->head.size, err); in preserve_sve_context()
383 __put_user_error(vl, &ctx->vl, err); in preserve_sve_context()
384 __put_user_error(flags, &ctx->flags, err); in preserve_sve_context()
386 err |= __copy_to_user(&ctx->__reserved, reserved, sizeof(reserved)); in preserve_sve_context()
389 err |= __copy_to_user((char __user *)ctx + SVE_SIG_REGS_OFFSET, in preserve_sve_context()
394 return err ? -EFAULT : 0; in preserve_sve_context()
399 int err = 0; in restore_sve_fpsimd_context() local
408 __get_user_error(user_vl, &(user->sve->vl), err); in restore_sve_fpsimd_context()
409 __get_user_error(flags, &(user->sve->flags), err); in restore_sve_fpsimd_context()
410 if (err) in restore_sve_fpsimd_context()
411 return err; in restore_sve_fpsimd_context()
457 err = __copy_from_user(current->thread.sve_state, in restore_sve_fpsimd_context()
461 if (err) in restore_sve_fpsimd_context()
470 err = read_fpsimd_context(&fpsimd, user); in restore_sve_fpsimd_context()
471 if (err) in restore_sve_fpsimd_context()
472 return err; in restore_sve_fpsimd_context()
498 int err = 0; in preserve_tpidr2_context() local
500 __put_user_error(TPIDR2_MAGIC, &ctx->head.magic, err); in preserve_tpidr2_context()
501 __put_user_error(sizeof(*ctx), &ctx->head.size, err); in preserve_tpidr2_context()
502 __put_user_error(tpidr2_el0, &ctx->tpidr2, err); in preserve_tpidr2_context()
504 return err; in preserve_tpidr2_context()
510 int err = 0; in restore_tpidr2_context() local
515 __get_user_error(tpidr2_el0, &user->tpidr2->tpidr2, err); in restore_tpidr2_context()
516 if (!err) in restore_tpidr2_context()
519 return err; in restore_tpidr2_context()
524 int err = 0; in preserve_za_context() local
536 __put_user_error(ZA_MAGIC, &ctx->head.magic, err); in preserve_za_context()
538 &ctx->head.size, err); in preserve_za_context()
539 __put_user_error(vl, &ctx->vl, err); in preserve_za_context()
541 err |= __copy_to_user(&ctx->__reserved, reserved, sizeof(reserved)); in preserve_za_context()
544 err |= __copy_to_user((char __user *)ctx + ZA_SIG_REGS_OFFSET, in preserve_za_context()
549 return err ? -EFAULT : 0; in preserve_za_context()
554 int err = 0; in restore_za_context() local
561 __get_user_error(user_vl, &(user->za->vl), err); in restore_za_context()
562 if (err) in restore_za_context()
563 return err; in restore_za_context()
585 err = __copy_from_user(current->thread.sme_state, in restore_za_context()
589 if (err) in restore_za_context()
600 int err = 0; in preserve_zt_context() local
608 __put_user_error(ZT_MAGIC, &ctx->head.magic, err); in preserve_zt_context()
610 &ctx->head.size, err); in preserve_zt_context()
611 __put_user_error(1, &ctx->nregs, err); in preserve_zt_context()
613 err |= __copy_to_user(&ctx->__reserved, reserved, sizeof(reserved)); in preserve_zt_context()
615 err |= __copy_to_user((char __user *)ctx + ZT_SIG_REGS_OFFSET, in preserve_zt_context()
619 return err ? -EFAULT : 0; in preserve_zt_context()
624 int err; in restore_zt_context() local
640 err = __copy_from_user(thread_zt_state(¤t->thread), in restore_zt_context()
644 if (err) in restore_zt_context()
666 int err = 0; in preserve_gcs_context() local
679 __put_user_error(GCS_MAGIC, &ctx->head.magic, err); in preserve_gcs_context()
680 __put_user_error(sizeof(*ctx), &ctx->head.size, err); in preserve_gcs_context()
681 __put_user_error(gcspr, &ctx->gcspr, err); in preserve_gcs_context()
682 __put_user_error(0, &ctx->reserved, err); in preserve_gcs_context()
684 &ctx->features_enabled, err); in preserve_gcs_context()
686 return err; in preserve_gcs_context()
692 int err = 0; in restore_gcs_context() local
697 __get_user_error(gcspr, &user->gcs->gcspr, err); in restore_gcs_context()
698 __get_user_error(enabled, &user->gcs->features_enabled, err); in restore_gcs_context()
699 if (err) in restore_gcs_context()
700 return err; in restore_gcs_context()
706 err = gcs_check_locked(current, enabled); in restore_gcs_context()
707 if (err != 0) in restore_gcs_context()
708 return err; in restore_gcs_context()
762 int err = 0; in parse_user_sigframe() local
778 __get_user_error(magic, &head->magic, err); in parse_user_sigframe()
779 __get_user_error(size, &head->size, err); in parse_user_sigframe()
780 if (err) in parse_user_sigframe()
781 return err; in parse_user_sigframe()
896 __get_user_error(extra_datap, &extra->datap, err); in parse_user_sigframe()
897 __get_user_error(extra_size, &extra->size, err); in parse_user_sigframe()
898 if (err) in parse_user_sigframe()
899 return err; in parse_user_sigframe()
909 __get_user_error(end_magic, &end->magic, err); in parse_user_sigframe()
910 __get_user_error(end_size, &end->size, err); in parse_user_sigframe()
911 if (err) in parse_user_sigframe()
912 return err; in parse_user_sigframe()
971 int i, err; in restore_sigframe() local
974 err = __copy_from_user(&set, &sf->uc.uc_sigmask, sizeof(set)); in restore_sigframe()
975 if (err == 0) in restore_sigframe()
980 err); in restore_sigframe()
981 __get_user_error(regs->sp, &sf->uc.uc_mcontext.sp, err); in restore_sigframe()
982 __get_user_error(regs->pc, &sf->uc.uc_mcontext.pc, err); in restore_sigframe()
983 __get_user_error(regs->pstate, &sf->uc.uc_mcontext.pstate, err); in restore_sigframe()
992 err |= !valid_user_regs(®s->user_regs, current); in restore_sigframe()
993 if (err == 0) in restore_sigframe()
994 err = parse_user_sigframe(&user, sf); in restore_sigframe()
996 if (err == 0 && system_supports_fpsimd()) { in restore_sigframe()
1001 err = restore_sve_fpsimd_context(&user); in restore_sigframe()
1003 err = restore_fpsimd_context(&user); in restore_sigframe()
1006 if (err == 0 && system_supports_gcs() && user.gcs) in restore_sigframe()
1007 err = restore_gcs_context(&user); in restore_sigframe()
1009 if (err == 0 && system_supports_tpidr2() && user.tpidr2) in restore_sigframe()
1010 err = restore_tpidr2_context(&user); in restore_sigframe()
1012 if (err == 0 && system_supports_fpmr() && user.fpmr) in restore_sigframe()
1013 err = restore_fpmr_context(&user); in restore_sigframe()
1015 if (err == 0 && system_supports_sme() && user.za) in restore_sigframe()
1016 err = restore_za_context(&user); in restore_sigframe()
1018 if (err == 0 && system_supports_sme2() && user.zt) in restore_sigframe()
1019 err = restore_zt_context(&user); in restore_sigframe()
1021 if (err == 0 && system_supports_poe() && user.poe) in restore_sigframe()
1022 err = restore_poe_context(&user, ua_state); in restore_sigframe()
1024 return err; in restore_sigframe()
1128 int err; in setup_sigframe_layout() local
1131 err = sigframe_alloc(user, &user->fpsimd_offset, in setup_sigframe_layout()
1133 if (err) in setup_sigframe_layout()
1134 return err; in setup_sigframe_layout()
1139 err = sigframe_alloc(user, &user->esr_offset, in setup_sigframe_layout()
1141 if (err) in setup_sigframe_layout()
1142 return err; in setup_sigframe_layout()
1147 err = sigframe_alloc(user, &user->gcs_offset, in setup_sigframe_layout()
1149 if (err) in setup_sigframe_layout()
1150 return err; in setup_sigframe_layout()
1167 err = sigframe_alloc(user, &user->sve_offset, in setup_sigframe_layout()
1169 if (err) in setup_sigframe_layout()
1170 return err; in setup_sigframe_layout()
1174 err = sigframe_alloc(user, &user->tpidr2_offset, in setup_sigframe_layout()
1176 if (err) in setup_sigframe_layout()
1177 return err; in setup_sigframe_layout()
1192 err = sigframe_alloc(user, &user->za_offset, in setup_sigframe_layout()
1194 if (err) in setup_sigframe_layout()
1195 return err; in setup_sigframe_layout()
1200 err = sigframe_alloc(user, &user->zt_offset, in setup_sigframe_layout()
1202 if (err) in setup_sigframe_layout()
1203 return err; in setup_sigframe_layout()
1208 err = sigframe_alloc(user, &user->fpmr_offset, in setup_sigframe_layout()
1210 if (err) in setup_sigframe_layout()
1211 return err; in setup_sigframe_layout()
1215 err = sigframe_alloc(user, &user->poe_offset, in setup_sigframe_layout()
1217 if (err) in setup_sigframe_layout()
1218 return err; in setup_sigframe_layout()
1228 int i, err = 0; in setup_sigframe() local
1232 __put_user_error(regs->regs[29], &user->next_frame->fp, err); in setup_sigframe()
1233 __put_user_error(regs->regs[30], &user->next_frame->lr, err); in setup_sigframe()
1237 err); in setup_sigframe()
1238 __put_user_error(regs->sp, &sf->uc.uc_mcontext.sp, err); in setup_sigframe()
1239 __put_user_error(regs->pc, &sf->uc.uc_mcontext.pc, err); in setup_sigframe()
1240 __put_user_error(regs->pstate, &sf->uc.uc_mcontext.pstate, err); in setup_sigframe()
1242 __put_user_error(current->thread.fault_address, &sf->uc.uc_mcontext.fault_address, err); in setup_sigframe()
1244 err |= __copy_to_user(&sf->uc.uc_sigmask, set, sizeof(*set)); in setup_sigframe()
1246 if (err == 0 && system_supports_fpsimd()) { in setup_sigframe()
1249 err |= preserve_fpsimd_context(fpsimd_ctx); in setup_sigframe()
1253 if (err == 0 && user->esr_offset) { in setup_sigframe()
1257 __put_user_error(ESR_MAGIC, &esr_ctx->head.magic, err); in setup_sigframe()
1258 __put_user_error(sizeof(*esr_ctx), &esr_ctx->head.size, err); in setup_sigframe()
1259 __put_user_error(current->thread.fault_code, &esr_ctx->esr, err); in setup_sigframe()
1262 if (system_supports_gcs() && err == 0 && user->gcs_offset) { in setup_sigframe()
1265 err |= preserve_gcs_context(gcs_ctx); in setup_sigframe()
1270 err == 0 && user->sve_offset) { in setup_sigframe()
1273 err |= preserve_sve_context(sve_ctx); in setup_sigframe()
1277 if (system_supports_tpidr2() && err == 0) { in setup_sigframe()
1280 err |= preserve_tpidr2_context(tpidr2_ctx); in setup_sigframe()
1284 if (system_supports_fpmr() && err == 0) { in setup_sigframe()
1287 err |= preserve_fpmr_context(fpmr_ctx); in setup_sigframe()
1290 if (system_supports_poe() && err == 0) { in setup_sigframe()
1294 err |= preserve_poe_context(poe_ctx, ua_state); in setup_sigframe()
1298 if (system_supports_sme() && err == 0 && user->za_offset) { in setup_sigframe()
1301 err |= preserve_za_context(za_ctx); in setup_sigframe()
1305 if (system_supports_sme2() && err == 0 && user->zt_offset) { in setup_sigframe()
1308 err |= preserve_zt_context(zt_ctx); in setup_sigframe()
1311 if (err == 0 && user->extra_offset) { in setup_sigframe()
1335 __put_user_error(EXTRA_MAGIC, &extra->head.magic, err); in setup_sigframe()
1336 __put_user_error(EXTRA_CONTEXT_SIZE, &extra->head.size, err); in setup_sigframe()
1337 __put_user_error(extra_datap, &extra->datap, err); in setup_sigframe()
1338 __put_user_error(extra_size, &extra->size, err); in setup_sigframe()
1341 __put_user_error(0, &end->magic, err); in setup_sigframe()
1342 __put_user_error(0, &end->size, err); in setup_sigframe()
1346 if (err == 0) { in setup_sigframe()
1350 __put_user_error(0, &end->magic, err); in setup_sigframe()
1351 __put_user_error(0, &end->size, err); in setup_sigframe()
1354 return err; in setup_sigframe()
1361 int err; in get_sigframe() local
1364 err = setup_sigframe_layout(user, false); in get_sigframe()
1365 if (err) in get_sigframe()
1366 return err; in get_sigframe()
1432 int err; in setup_return() local
1439 err = gcs_signal_entry(sigtramp, ksig); in setup_return()
1440 if (err) in setup_return()
1441 return err; in setup_return()
1496 int err = 0; in setup_rt_frame() local
1506 __put_user_error(0, &frame->uc.uc_flags, err); in setup_rt_frame()
1507 __put_user_error(NULL, &frame->uc.uc_link, err); in setup_rt_frame()
1509 err |= __save_altstack(&frame->uc.uc_stack, regs->sp); in setup_rt_frame()
1510 err |= setup_sigframe(&user, regs, set, &ua_state); in setup_rt_frame()
1512 err |= copy_siginfo_to_user(&frame->info, &ksig->info); in setup_rt_frame()
1514 if (err == 0) in setup_rt_frame()
1515 err = setup_return(regs, ksig, &user, usig); in setup_rt_frame()
1522 if (err == 0) in setup_rt_frame()
1527 return err; in setup_rt_frame()