Explorar o código

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 %!s(int64=17) %!d(string=hai) anos
pai
achega
7d4ee289d1
Modificáronse 2 ficheiros con 6 adicións e 6 borrados
  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
 	},
 	},