Commit 32f1fde0 authored by Benjamin Berg's avatar Benjamin Berg Committed by Johannes Berg
Browse files

um: fix sparse warnings from regset refactor



Some variables were not tagged with __user and another was not marked as
static even though it should be.

Reported-by: default avatarkernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202410280655.gOlEFwdG-lkp@intel.com/
Closes: https://lore.kernel.org/oe-kbuild-all/202410281821.WSPsAwq7-lkp@intel.com/


Fixes: 3f17fed2 ("um: switch to regset API and depend on XSTATE")
Signed-off-by: default avatarBenjamin Berg <benjamin.berg@intel.com>
Link: https://patch.msgid.link/20241031142017.430420-1-benjamin@sipsolutions.net


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 0b0ad254
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -242,7 +242,7 @@ static struct user_regset uml_regsets[] __ro_after_init = {
	/* TODO: Add TLS regset for 32bit */
};

const struct user_regset_view user_uml_view = {
static const struct user_regset_view user_uml_view = {
#ifdef CONFIG_X86_32
	.name = "i386", .e_machine = EM_386,
#else
+8 −5
Original line number Diff line number Diff line
@@ -82,9 +82,10 @@ static int copy_sc_from_user(struct pt_regs *regs,
#undef GETREG

#ifdef CONFIG_X86_32
	from_fp64 = ((void *)sc.fpstate) + offsetof(struct _fpstate_32, _fxsr_env);
	from_fp64 = ((void __user *)sc.fpstate) +
		    offsetof(struct _fpstate_32, _fxsr_env);
#else
	from_fp64 = (void *)sc.fpstate;
	from_fp64 = (void __user *)sc.fpstate;
#endif

	err = copy_from_user(regs->regs.fp, from_fp64, host_fp_size);
@@ -97,7 +98,7 @@ static int copy_sc_from_user(struct pt_regs *regs,
				    task_user_regset_view(current),
				    REGSET_FP_LEGACY, 0,
				    sizeof(struct user_i387_struct),
				    (void *)sc.fpstate);
				    (void __user *)sc.fpstate);
	if (err < 0)
		return err;
#endif
@@ -173,7 +174,8 @@ static int copy_sc_to_user(struct sigcontext __user *to,
	BUILD_BUG_ON(offsetof(struct _xstate, xstate_hdr) !=
		     offsetof(struct _xstate_64, xstate_hdr) +
			offsetof(struct _fpstate_32, _fxsr_env));
	to_fp64 = (void *)to_fp + offsetof(struct _fpstate_32, _fxsr_env);
	to_fp64 = (void __user *)to_fp +
		  offsetof(struct _fpstate_32, _fxsr_env);
#else
	to_fp64 = to_fp;
#endif /* CONFIG_X86_32 */
@@ -198,7 +200,8 @@ static int copy_sc_to_user(struct sigcontext __user *to,
	__put_user(host_fp_size, &to_fp64->fpstate.sw_reserved.xstate_size);

	__put_user(FP_XSTATE_MAGIC1, &to_fp64->fpstate.sw_reserved.magic1);
	__put_user(FP_XSTATE_MAGIC2, (int *)((void *)to_fp64 + host_fp_size));
	__put_user(FP_XSTATE_MAGIC2,
		   (int __user *)((void __user *)to_fp64 + host_fp_size));

	return 0;
}