OSDN Git Service

rxrpc: Don't retain the server key in the connection
authorDavid Howells <dhowells@redhat.com>
Wed, 16 Sep 2020 07:00:44 +0000 (08:00 +0100)
committerDavid Howells <dhowells@redhat.com>
Mon, 23 Nov 2020 18:09:29 +0000 (18:09 +0000)
commitec832bd06d6fdf08b0455ab7c2a7a9104e029638
treef8a8516a58681d66001736a2234058298ce4d96c
parent41057ebde0025b0179b852dd785c9f3f0f08adad
rxrpc: Don't retain the server key in the connection

Don't retain a pointer to the server key in the connection, but rather get
it on demand when the server has to deal with a response packet.

This is necessary to implement RxGK (GSSAPI-mediated transport class),
where we can't know which key we'll need until we've challenged the client
and got back the response.

This also means that we don't need to do a key search in the accept path in
softirq mode.

Also, whilst we're at it, allow the security class to ask for a kvno and
encoding-type variant of a server key as RxGK needs different keys for
different encoding types.  Keys of this type have an extra bit in the
description:

"<service-id>:<security-index>:<kvno>:<enctype>"

Signed-off-by: David Howells <dhowells@redhat.com>
net/rxrpc/ar-internal.h
net/rxrpc/call_accept.c
net/rxrpc/conn_event.c
net/rxrpc/conn_object.c
net/rxrpc/conn_service.c
net/rxrpc/rxkad.c
net/rxrpc/security.c