On 02/21/2018 05:55 PM, Ram Pai wrote:
alloc_random_pkey() was allocating the same pkey every time.
Not all pkeys were geting tested. fixed it.
...
quoted hunk ↗ jump to hunk
@@ -602,13 +603,15 @@ int alloc_random_pkey(void)
int alloced_pkeys[NR_PKEYS];
int nr_alloced = 0;
int random_index;
+
memset(alloced_pkeys, 0, sizeof(alloced_pkeys));
+ srand((unsigned int)time(NULL));
/* allocate every possible key and make a note of which ones we got */
max_nr_pkey_allocs = NR_PKEYS;
- max_nr_pkey_allocs = 1;
for (i = 0; i < max_nr_pkey_allocs; i++) {
int new_pkey = alloc_pkey();
The srand() is probably useful, but won't this always just do a single
alloc_pkey() now? That seems like it will mean we always use the first
one the kernel gives us, which isn't random.
quoted hunk ↗ jump to hunk
- dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%x\n", __func__,
- __LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
+ dprintf1("%s()::%d, ret: %d pkey_reg: 0x%x shadow: 0x%016lx\n",
+ __func__, __LINE__, ret, __rdpkey_reg(), shadow_pkey_reg);
return ret;
}
This belonged in the pkey_reg_t patch, I think.