Apologies for the delay. I am sending the new version patch with below
changes.
On 5/31/2024 4:28 PM, Borislav Petkov wrote:
p type, size, offset and flag values for every xfeature that is present.
+ */
+static int dump_xsave_layout_desc(struct coredump_params *cprm)
+{
+ int num_records = 0;
+ int i;
+
+ for_each_extended_xfeature(i, fpu_kernel_cfg.max_features) {
Modifying "fpu_kernel_cfg.max_features" to "fpu_user_cfg.max_features"
Supervisor bits also set in "fpu_kernel_cfg.max_features"
(https://github.com/torvalds/linux/blob/master/arch/x86/kernel/fpu/xstate.c#L777)
+ struct xfeat_component xc = {
+ .type = i,
+ .size = xstate_sizes[i],
+ .offset = xstate_offsets[i],
+ /* reserved for future use */
+ .flags = 0,
+ };
+
+ if (!dump_emit(cprm, &xc, sizeof(xc)))
+ return 0;
+
+ num_records++;
+ }
+ return num_records;
+}
+
+static int get_xsave_desc_size(void)
+{
+ int cnt = 0;
+ int i;
+
changing "int" to "u32" as per review comment.
+ for_each_extended_xfeature(i, fpu_kernel_cfg.max_features)
+ cnt++;
+
+ return cnt * (sizeof(struct xfeat_component));
+}
+
+
+int elf_coredump_extra_notes_size(void)
+{
+ int size;
Adding below check, same as in "elf_coredump_extra_notes_write"
if (!fpu_user_cfg.max_features)
return 0;
thanks,
vigneshbalu.
+ /* .note header */
+ size = sizeof(struct elf_note);
+ /* name + align */
+ size += roundup(sizeof(owner_name), 4);
+ size += get_xsave_desc_size();
+
#define NT_S390_TIMER 0x301 /* s390 timer register */
#define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */
--
2.43.0
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette