Bläddra i källkod

sparc: Fix user_regset 'n' field values.

As noticed by Russell King, we were not setting this properly
to the number of entries, but rather the total size.

This results in the core dumping code allocating waayyyy too
much memory.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 17 år sedan
förälder
incheckning
7d4ee289d1
2 ändrade filer med 6 tillägg och 6 borttagningar
  1. 2 2
      arch/sparc/kernel/ptrace.c
  2. 4 4
      arch/sparc64/kernel/ptrace.c

+ 2 - 2
arch/sparc/kernel/ptrace.c

@@ -288,7 +288,7 @@ static const struct user_regset sparc32_regsets[] = {
 	 */
 	 */
 	[REGSET_GENERAL] = {
 	[REGSET_GENERAL] = {
 		.core_note_type = NT_PRSTATUS,
 		.core_note_type = NT_PRSTATUS,
-		.n = 38 * sizeof(u32),
+		.n = 38,
 		.size = sizeof(u32), .align = sizeof(u32),
 		.size = sizeof(u32), .align = sizeof(u32),
 		.get = genregs32_get, .set = genregs32_set
 		.get = genregs32_get, .set = genregs32_set
 	},
 	},
@@ -304,7 +304,7 @@ static const struct user_regset sparc32_regsets[] = {
 	 */
 	 */
 	[REGSET_FP] = {
 	[REGSET_FP] = {
 		.core_note_type = NT_PRFPREG,
 		.core_note_type = NT_PRFPREG,
-		.n = 99 * sizeof(u32),
+		.n = 99,
 		.size = sizeof(u32), .align = sizeof(u32),
 		.size = sizeof(u32), .align = sizeof(u32),
 		.get = fpregs32_get, .set = fpregs32_set
 		.get = fpregs32_get, .set = fpregs32_set
 	},
 	},

+ 4 - 4
arch/sparc64/kernel/ptrace.c

@@ -443,7 +443,7 @@ static const struct user_regset sparc64_regsets[] = {
 	 */
 	 */
 	[REGSET_GENERAL] = {
 	[REGSET_GENERAL] = {
 		.core_note_type = NT_PRSTATUS,
 		.core_note_type = NT_PRSTATUS,
-		.n = 36 * sizeof(u64),
+		.n = 36,
 		.size = sizeof(u64), .align = sizeof(u64),
 		.size = sizeof(u64), .align = sizeof(u64),
 		.get = genregs64_get, .set = genregs64_set
 		.get = genregs64_get, .set = genregs64_set
 	},
 	},
@@ -455,7 +455,7 @@ static const struct user_regset sparc64_regsets[] = {
 	 */
 	 */
 	[REGSET_FP] = {
 	[REGSET_FP] = {
 		.core_note_type = NT_PRFPREG,
 		.core_note_type = NT_PRFPREG,
-		.n = 35 * sizeof(u64),
+		.n = 35,
 		.size = sizeof(u64), .align = sizeof(u64),
 		.size = sizeof(u64), .align = sizeof(u64),
 		.get = fpregs64_get, .set = fpregs64_set
 		.get = fpregs64_get, .set = fpregs64_set
 	},
 	},
@@ -801,7 +801,7 @@ static const struct user_regset sparc32_regsets[] = {
 	 */
 	 */
 	[REGSET_GENERAL] = {
 	[REGSET_GENERAL] = {
 		.core_note_type = NT_PRSTATUS,
 		.core_note_type = NT_PRSTATUS,
-		.n = 38 * sizeof(u32),
+		.n = 38,
 		.size = sizeof(u32), .align = sizeof(u32),
 		.size = sizeof(u32), .align = sizeof(u32),
 		.get = genregs32_get, .set = genregs32_set
 		.get = genregs32_get, .set = genregs32_set
 	},
 	},
@@ -817,7 +817,7 @@ static const struct user_regset sparc32_regsets[] = {
 	 */
 	 */
 	[REGSET_FP] = {
 	[REGSET_FP] = {
 		.core_note_type = NT_PRFPREG,
 		.core_note_type = NT_PRFPREG,
-		.n = 99 * sizeof(u32),
+		.n = 99,
 		.size = sizeof(u32), .align = sizeof(u32),
 		.size = sizeof(u32), .align = sizeof(u32),
 		.get = fpregs32_get, .set = fpregs32_set
 		.get = fpregs32_get, .set = fpregs32_set
 	},
 	},