Skip to content
Snippets Groups Projects
Commit 29e3dcdb authored by Roberto Bergantinos Corpas's avatar Roberto Bergantinos Corpas Committed by Yang Yingliang
Browse files

sunrpc: expiry_time should be seconds not timeval


stable inclusion
from linux-4.19.103
commit a90c2c5e8c01c50b6ba026742d0bfd3299b42d26

--------------------------------

commit 3d96208c upstream.

When upcalling gssproxy, cache_head.expiry_time is set as a
timeval, not seconds since boot. As such, RPC cache expiry
logic will not clean expired objects created under
auth.rpcsec.context cache.

This has proven to cause kernel memory leaks on field. Using
64 bit variants of getboottime/timespec

Expiration times have worked this way since 2010's c5b29f88 "sunrpc:
use seconds since boot in expiry cache".  The gssproxy code introduced
in 2012 added gss_proxy_save_rsc and introduced the bug.  That's a while
for this to lurk, but it required a bit of an extreme case to make it
obvious.

Signed-off-by: default avatarRoberto Bergantinos Corpas <rbergant@redhat.com>
Cc: stable@vger.kernel.org
Fixes: 030d794b "SUNRPC: Use gssproxy upcall for server..."
Tested-By: default avatarFrank Sorenson <sorenson@redhat.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
Signed-off-by: default avatarLi Aichun <liaichun@huawei.com>
Reviewed-by: default avatarguodeqing <geffrey.guo@huawei.com>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
parent 386d5303
No related branches found
No related tags found
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment