On Thu, 2025-06-12 at 13:36 +0100, David Howells wrote: [...] > Thoughts? One of the problems I keep tripping over is different special casing for user keyrings (which are real struct key structures) and system keyrings which are special values of the pointer in struct key *. For examples of what this special handling does, just look at things like bpf_trace.c:bpf_lookup_{user|system}_key Since the serial allocation code has a hard coded not less than 3 (which looks for all the world like it was designed to mean the two system keyring id's were never used as user serial numbers) I think we could simply allow the two system keyring ids to be passed into lookup_user_key() (which now might be a bit misnamed) and special case not freeing it in put_key(). Regards, James