__put_user_error(magic, &frame->magic, err);
__put_user_error(size, &frame->size, err);
-- --- /*
-- --- * Copy the floating point registers. There can be unused
-- --- * registers see asm/hwcap.h for details.
-- --- */
-- --- err |= __copy_to_user(&frame->ufp.fpregs, &h->fpregs,
-- --- sizeof(h->fpregs));
-- --- /*
-- --- * Copy the status and control register.
-- --- */
-- --- __put_user_error(h->fpscr, &frame->ufp.fpscr, err);
-- ---
-- --- /*
-- --- * Copy the exception registers.
-- --- */
-- --- __put_user_error(h->fpexc, &frame->ufp_exc.fpexc, err);
-- --- __put_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
-- --- __put_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
-
- return err ? -EFAULT : 0;
++ +++ if (err)
++ +++ return -EFAULT;
+
-- - - return err ? -EFAULT : 0;
++ +++ return vfp_preserve_user_clear_hwstate(&frame->ufp, &frame->ufp_exc);
}
static int restore_vfp_context(struct vfp_sigframe __user *frame)