• David Howells's avatar
    keys, dns: Allow key types (eg. DNS) to be reclaimed immediately on expiry · 39299bdd
    David Howells authored
    If a key has an expiration time, then when that time passes, the key is
    left around for a certain amount of time before being collected (5 mins by
    default) so that EKEYEXPIRED can be returned instead of ENOKEY.  This is a
    problem for DNS keys because we want to redo the DNS lookup immediately at
    that point.
    
    Fix this by allowing key types to be marked such that keys of that type
    don't have this extra period, but are reclaimed as soon as they expire and
    turn this on for dns_resolver-type keys.  To make this easier to handle,
    key->expiry is changed to be permanent if TIME64_MAX rather than 0.
    
    Furthermore, give such new-style negative DNS results a 1s default expiry
    if no other expiry time is set rather than allowing it to stick around
    indefinitely.  This shouldn't be zero as ls will follow a failing stat call
    immediately with a second with AT_SYMLINK_NOFOLLOW added.
    
    Fixes: 1a4240f4 ("DNS: Separate out CIFS DNS Resolver code")
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Tested-by: default avatarMarkus Suvanto <markus.suvanto@gmail.com>
    cc: Wang Lei <wang840925@gmail.com>
    cc: Jeff Layton <jlayton@redhat.com>
    cc: Steve French <smfrench@gmail.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: Jarkko Sakkinen <jarkko@kernel.org>
    cc: "David S. Miller" <davem@davemloft.net>
    cc: Eric Dumazet <edumazet@google.com>
    cc: Jakub Kicinski <kuba@kernel.org>
    cc: Paolo Abeni <pabeni@redhat.com>
    cc: linux-afs@lists.infradead.org
    cc: linux-cifs@vger.kernel.org
    cc: linux-nfs@vger.kernel.org
    cc: ceph-devel@vger.kernel.org
    cc: keyrings@vger.kernel.org
    cc: netdev@vger.kernel.org
    39299bdd
internal.h 12.1 KB