[PATCH] KEYS: fix race between updating and finding negative key
David Howells
dhowells at redhat.com
Tue Sep 19 16:22:28 UTC 2017
Eric Biggers <ebiggers3 at gmail.com> wrote:
> Fix the bug by moving ->reject_error out of the union with ->payload,
> then using nonzero ->reject_error to mean that the key is negative.
>
> This eliminates the need for KEY_FLAG_NEGATIVE, which we remove as well
> so that we don't have to handle memory ordering between
> KEY_FLAG_NEGATIVE and ->reject_error. We *do* still need to handle
> memory ordering between KEY_FLAG_INSTANTIATED and ->reject_error, but
> that was needed before (and for KEY_FLAG_NEGATIVE as well --- though it
> wasn't done correctly, which was another bug).
Hmmm... My only objection is that it extends struct key still further, but
you do have a point.
If we're going to do this, can we eliminate KEY_FLAG_INSTANTIATED also and
make ->reject_error into ->status?
0 -> uninstantiated
1 -> instantiated
<0 -> negatively instantiated/rejected
Also, can we make it a short int please?
Also, can setting this field be done with a release barrier rather than a
write barrier?
David
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the Linux-security-module-archive
mailing list