Re: [PATCH] assoc_array: don't call compare_object() on a node
From: David Howells
Date: Mon Feb 22 2016 - 11:37:50 EST
Jerome Marchand <jmarchan@xxxxxxxxxx> wrote:
> In assoc_array_insert_into_terminal_node(), we call the
> compare_object() method on all empty slots,
Ummm... That shouldn't happen - the:
if (!ptr) {
free_slot = i;
continue;
}
preceding the line you modified should cause the comparison to be skipped on a
slot if it's empty.
> even when they're not leaves, passing a pointer to an unexpected structure
> to compare_object().
Do you instead mean a metadata pointer rather than an empty slot?
> Currently it causes an out-of-bound read access in keyring_compare_object
> detected by KASan. The issue is easily reproduced with keyutils testsuite.
I don't see it. Did you modify the testsuite, or is it a matter of running it
often enough?
Also, can you include the oops output you get in the patch description,
please?
That said, I can see that there is probably an issue that your patch fixes -
but it's not quite the one you describe (see above).
David