From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [android-common:android13-5.15 2/2] arch/x86/kernel/fpu/xstate.c:1119: warning: Function parameter or member 'xsave' not described in 'copy_uabi_to_xstate'
Date: Tue, 16 Dec 2025 20:46:13 +0800 [thread overview]
Message-ID: <202512162012.Cej5WHGd-lkp@intel.com> (raw)
Hi Kyle,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common android13-5.15
head: d36711b0a31fb7c6682f53e306fa330cc0b125a2
commit: 3f1c81426a9f1cf038b00994dab1ececa72de56b [2/2] x86/fpu: Allow PKRU to be (once again) written by ptrace.
config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20251216/202512162012.Cej5WHGd-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 1335a05ab8bc8339ce24be3a9da89d8c3f4e0571)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251216/202512162012.Cej5WHGd-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512162012.Cej5WHGd-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/x86/kernel/fpu/xstate.c:1119: warning: Function parameter or member 'xsave' not described in 'copy_uabi_to_xstate'
>> arch/x86/kernel/fpu/xstate.c:1119: warning: Excess function parameter 'fpstate' description in 'copy_uabi_to_xstate'
vim +1119 arch/x86/kernel/fpu/xstate.c
947f4947cf00ea Thomas Gleixner 2021-06-23 1092
522e92743b3535 Thomas Gleixner 2021-06-23 1093
3f1c81426a9f1c Kyle Huey 2023-01-09 1094 /**
3f1c81426a9f1c Kyle Huey 2023-01-09 1095 * copy_uabi_to_xstate - Copy a UABI format buffer to the kernel xstate
3f1c81426a9f1c Kyle Huey 2023-01-09 1096 * @fpstate: The fpstate buffer to copy to
3f1c81426a9f1c Kyle Huey 2023-01-09 1097 * @kbuf: The UABI format buffer, if it comes from the kernel
3f1c81426a9f1c Kyle Huey 2023-01-09 1098 * @ubuf: The UABI format buffer, if it comes from userspace
3f1c81426a9f1c Kyle Huey 2023-01-09 1099 * @pkru: The location to write the PKRU value to
3f1c81426a9f1c Kyle Huey 2023-01-09 1100 *
3f1c81426a9f1c Kyle Huey 2023-01-09 1101 * Converts from the UABI format into the kernel internal hardware
3f1c81426a9f1c Kyle Huey 2023-01-09 1102 * dependent format.
3f1c81426a9f1c Kyle Huey 2023-01-09 1103 *
3f1c81426a9f1c Kyle Huey 2023-01-09 1104 * This function ultimately has two different callers with distinct PKRU
3f1c81426a9f1c Kyle Huey 2023-01-09 1105 * behavior.
3f1c81426a9f1c Kyle Huey 2023-01-09 1106 * 1. When called from sigreturn the PKRU register will be restored from
3f1c81426a9f1c Kyle Huey 2023-01-09 1107 * @fpstate via an XRSTOR. Correctly copying the UABI format buffer to
3f1c81426a9f1c Kyle Huey 2023-01-09 1108 * @fpstate is sufficient to cover this case, but the caller will also
3f1c81426a9f1c Kyle Huey 2023-01-09 1109 * pass a pointer to the thread_struct's pkru field in @pkru and updating
3f1c81426a9f1c Kyle Huey 2023-01-09 1110 * it is harmless.
3f1c81426a9f1c Kyle Huey 2023-01-09 1111 * 2. When called from ptrace the PKRU register will be restored from the
3f1c81426a9f1c Kyle Huey 2023-01-09 1112 * thread_struct's pkru field. A pointer to that is passed in @pkru.
3f1c81426a9f1c Kyle Huey 2023-01-09 1113 * The kernel will restore it manually, so the XRSTOR behavior that resets
3f1c81426a9f1c Kyle Huey 2023-01-09 1114 * the PKRU register to the hardware init value (0) if the corresponding
3f1c81426a9f1c Kyle Huey 2023-01-09 1115 * xfeatures bit is not set is emulated here.
3f1c81426a9f1c Kyle Huey 2023-01-09 1116 */
522e92743b3535 Thomas Gleixner 2021-06-23 1117 static int copy_uabi_to_xstate(struct xregs_state *xsave, const void *kbuf,
b29773d6b0bb8e Kyle Huey 2023-01-09 1118 const void __user *ubuf, u32 *pkru)
79fecc2b7506f2 Ingo Molnar 2017-09-23 @1119 {
79fecc2b7506f2 Ingo Molnar 2017-09-23 1120 unsigned int offset, size;
80d8ae86b36791 Eric Biggers 2017-09-24 1121 struct xstate_header hdr;
522e92743b3535 Thomas Gleixner 2021-06-23 1122 u64 mask;
522e92743b3535 Thomas Gleixner 2021-06-23 1123 int i;
79fecc2b7506f2 Ingo Molnar 2017-09-23 1124
79fecc2b7506f2 Ingo Molnar 2017-09-23 1125 offset = offsetof(struct xregs_state, header);
522e92743b3535 Thomas Gleixner 2021-06-23 1126 if (copy_from_buffer(&hdr, offset, sizeof(hdr), kbuf, ubuf))
522e92743b3535 Thomas Gleixner 2021-06-23 1127 return -EFAULT;
79fecc2b7506f2 Ingo Molnar 2017-09-23 1128
5274e6c172c472 Fenghua Yu 2020-05-12 1129 if (validate_user_xstate_header(&hdr))
79fecc2b7506f2 Ingo Molnar 2017-09-23 1130 return -EINVAL;
79fecc2b7506f2 Ingo Molnar 2017-09-23 1131
522e92743b3535 Thomas Gleixner 2021-06-23 1132 /* Validate MXCSR when any of the related features is in use */
522e92743b3535 Thomas Gleixner 2021-06-23 1133 mask = XFEATURE_MASK_FP | XFEATURE_MASK_SSE | XFEATURE_MASK_YMM;
522e92743b3535 Thomas Gleixner 2021-06-23 1134 if (hdr.xfeatures & mask) {
522e92743b3535 Thomas Gleixner 2021-06-23 1135 u32 mxcsr[2];
522e92743b3535 Thomas Gleixner 2021-06-23 1136
522e92743b3535 Thomas Gleixner 2021-06-23 1137 offset = offsetof(struct fxregs_state, mxcsr);
522e92743b3535 Thomas Gleixner 2021-06-23 1138 if (copy_from_buffer(mxcsr, offset, sizeof(mxcsr), kbuf, ubuf))
522e92743b3535 Thomas Gleixner 2021-06-23 1139 return -EFAULT;
522e92743b3535 Thomas Gleixner 2021-06-23 1140
522e92743b3535 Thomas Gleixner 2021-06-23 1141 /* Reserved bits in MXCSR must be zero. */
522e92743b3535 Thomas Gleixner 2021-06-23 1142 if (mxcsr[0] & ~mxcsr_feature_mask)
947f4947cf00ea Thomas Gleixner 2021-06-23 1143 return -EINVAL;
947f4947cf00ea Thomas Gleixner 2021-06-23 1144
522e92743b3535 Thomas Gleixner 2021-06-23 1145 /* SSE and YMM require MXCSR even when FP is not in use. */
522e92743b3535 Thomas Gleixner 2021-06-23 1146 if (!(hdr.xfeatures & XFEATURE_MASK_FP)) {
522e92743b3535 Thomas Gleixner 2021-06-23 1147 xsave->i387.mxcsr = mxcsr[0];
522e92743b3535 Thomas Gleixner 2021-06-23 1148 xsave->i387.mxcsr_mask = mxcsr[1];
522e92743b3535 Thomas Gleixner 2021-06-23 1149 }
522e92743b3535 Thomas Gleixner 2021-06-23 1150 }
522e92743b3535 Thomas Gleixner 2021-06-23 1151
79fecc2b7506f2 Ingo Molnar 2017-09-23 1152 for (i = 0; i < XFEATURE_MAX; i++) {
79fecc2b7506f2 Ingo Molnar 2017-09-23 1153 u64 mask = ((u64)1 << i);
79fecc2b7506f2 Ingo Molnar 2017-09-23 1154
b89eda482d7849 Eric Biggers 2017-09-24 1155 if (hdr.xfeatures & mask) {
07baeb04f37c95 Sebastian Andrzej Siewior 2019-04-03 1156 void *dst = __raw_xsave_addr(xsave, i);
79fecc2b7506f2 Ingo Molnar 2017-09-23 1157
79fecc2b7506f2 Ingo Molnar 2017-09-23 1158 offset = xstate_offsets[i];
79fecc2b7506f2 Ingo Molnar 2017-09-23 1159 size = xstate_sizes[i];
79fecc2b7506f2 Ingo Molnar 2017-09-23 1160
522e92743b3535 Thomas Gleixner 2021-06-23 1161 if (copy_from_buffer(dst, offset, size, kbuf, ubuf))
522e92743b3535 Thomas Gleixner 2021-06-23 1162 return -EFAULT;
79fecc2b7506f2 Ingo Molnar 2017-09-23 1163 }
79fecc2b7506f2 Ingo Molnar 2017-09-23 1164 }
79fecc2b7506f2 Ingo Molnar 2017-09-23 1165
3f1c81426a9f1c Kyle Huey 2023-01-09 1166 if (hdr.xfeatures & XFEATURE_MASK_PKRU) {
3f1c81426a9f1c Kyle Huey 2023-01-09 1167 struct pkru_state *xpkru;
3f1c81426a9f1c Kyle Huey 2023-01-09 1168
3f1c81426a9f1c Kyle Huey 2023-01-09 1169 xpkru = __raw_xsave_addr(xsave, XFEATURE_PKRU);
3f1c81426a9f1c Kyle Huey 2023-01-09 1170 *pkru = xpkru->pkru;
3f1c81426a9f1c Kyle Huey 2023-01-09 1171 }
3f1c81426a9f1c Kyle Huey 2023-01-09 1172
79fecc2b7506f2 Ingo Molnar 2017-09-23 1173 /*
79fecc2b7506f2 Ingo Molnar 2017-09-23 1174 * The state that came in from userspace was user-state only.
79fecc2b7506f2 Ingo Molnar 2017-09-23 1175 * Mask all the user states out of 'xfeatures':
79fecc2b7506f2 Ingo Molnar 2017-09-23 1176 */
8ab22804efefea Fenghua Yu 2020-05-12 1177 xsave->header.xfeatures &= XFEATURE_MASK_SUPERVISOR_ALL;
79fecc2b7506f2 Ingo Molnar 2017-09-23 1178
79fecc2b7506f2 Ingo Molnar 2017-09-23 1179 /*
79fecc2b7506f2 Ingo Molnar 2017-09-23 1180 * Add back in the features that came in from userspace:
79fecc2b7506f2 Ingo Molnar 2017-09-23 1181 */
b89eda482d7849 Eric Biggers 2017-09-24 1182 xsave->header.xfeatures |= hdr.xfeatures;
79fecc2b7506f2 Ingo Molnar 2017-09-23 1183
79fecc2b7506f2 Ingo Molnar 2017-09-23 1184 return 0;
79fecc2b7506f2 Ingo Molnar 2017-09-23 1185 }
79fecc2b7506f2 Ingo Molnar 2017-09-23 1186
:::::: The code at line 1119 was first introduced by commit
:::::: 79fecc2b7506f29fb91becc65e8788e5ae7eba9f x86/fpu: Split copy_user_to_xstate() into copy_kernel_to_xstate() & copy_user_to_xstate()
:::::: TO: Ingo Molnar <mingo@kernel.org>
:::::: CC: Ingo Molnar <mingo@kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2025-12-16 12:47 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202512162012.Cej5WHGd-lkp@intel.com \
--to=lkp@intel.com \
--cc=cros-kernel-buildreports@googlegroups.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.