Commit dad6f37c authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Benjamin Herrenschmidt

powerpc: subpage_protect: Increase the array size to take care of 64TB

We now support TASK_SIZE of 16TB, hence the array should be 8.

Fixes the below crash:

Unable to handle kernel paging request for data at address 0x000100bd
Faulting instruction address: 0xc00000000004f914
cpu 0x13: Vector: 300 (Data Access) at [c000000fea75fa90]
    pc: c00000000004f914: .sys_subpage_prot+0x2d4/0x5c0
    lr: c00000000004fb5c: .sys_subpage_prot+0x51c/0x5c0
    sp: c000000fea75fd10
   msr: 9000000000009032
   dar: 100bd
 dsisr: 40000000
  current = 0xc000000fea6ae490
  paca    = 0xc00000000fb8ab00   softe: 0        irq_happened: 0x00
    pid   = 8237, comm = a.out
enter ? for help
[c000000fea75fe30] c00000000000a164 syscall_exit+0x0/0x98
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent e698b966
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
*/ */
#include <asm/pgtable-ppc64.h> #include <asm/pgtable-ppc64.h>
#include <asm/bug.h> #include <asm/bug.h>
#include <asm/processor.h>
/* /*
* Segment table * Segment table
...@@ -496,7 +497,7 @@ extern void slb_set_size(u16 size); ...@@ -496,7 +497,7 @@ extern void slb_set_size(u16 size);
*/ */
struct subpage_prot_table { struct subpage_prot_table {
unsigned long maxaddr; /* only addresses < this are protected */ unsigned long maxaddr; /* only addresses < this are protected */
unsigned int **protptrs[2]; unsigned int **protptrs[(TASK_SIZE_USER64 >> 43)];
unsigned int *low_prot[4]; unsigned int *low_prot[4];
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment