mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 23:23:03 +00:00
nfsd-6.12 fixes:
- Fix NFSD bring-up / shutdown - Fix a UAF when releasing a stateid -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEKLLlsBKG3yQ88j7+M2qzM29mf5cFAmcHx6IACgkQM2qzM29m f5ecExAAheSpSP9D+1n3hKeOlNfhY8FUzd41Arn4NYV+jIBJbtx94/FlSNOxA0mp Ovm1I8uAxy4TR8TLt7tsxfT7JDOStKwXFl3QlOUZT/+uyyJr7/q5R959R3oMiccR Rfrpj6j2yYWrI8qGDGHca4Vv2bDSxr4mzztWwDe0SHSsjwf4OAcv+XF5vcfZ/CJN Bxulb9WfNU8XvdFcRDHokMfk6jiY6/+FCTwX8ckvbVEG6gHT8+CRYSUJ05j0LJGo xKZV913NgzcuV7PH0vq6vExJE6+rEPt/ejDAT5FM5yeNe+WJ4RTDgsYyIr9iLbHF mWB9M4NnP+EZhejtOCbZ9RZjjKro09ilEPpqILuuGQPtcHSeWmhNbFz0kwLe+zYZ CdtjnPZhjB0ITWgZ1HCtoJ8k/ZcMa7iiM/kApMLGr9fVj8/BHHFzS95PK7K/Fqur FLdhvo6CzZCnRd16e2kqWsG7wO2lPWcz4NWTf9wxIG5GCunXoVCEnK1VfHvnldbH BIFXZ+ib5qnL2i3Qmz7bQxmfIp5ryZnNx1mF0OM8imR9K/rsnARd7JfQ99lpMy8D mD4coZVTMMk/Zg9zuH8k5GBzB2zXXqgngp4IJIxqrKR7/AsuSU3R7r+O9CWN91GQ GKpRtMn/rVUg81jxDr3qoKquyxONoyVrVXAKsj1PgUSQdjUJgqU= =Rud7 -----END PGP SIGNATURE----- Merge tag 'nfsd-6.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux Pull nfsd fixes from Chuck Lever: - Fix NFSD bring-up / shutdown - Fix a UAF when releasing a stateid * tag 'nfsd-6.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux: nfsd: fix possible badness in FREE_STATEID nfsd: nfsd_destroy_serv() must call svc_destroy() even if nfsd_startup_net() failed NFSD: Mark filecache "down" if init fails
This commit is contained in:
commit
5870963f6c
@ -751,7 +751,7 @@ nfsd_file_cache_init(void)
|
||||
|
||||
ret = rhltable_init(&nfsd_file_rhltable, &nfsd_file_rhash_params);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out;
|
||||
|
||||
ret = -ENOMEM;
|
||||
nfsd_file_slab = KMEM_CACHE(nfsd_file, 0);
|
||||
@ -803,6 +803,8 @@ nfsd_file_cache_init(void)
|
||||
|
||||
INIT_DELAYED_WORK(&nfsd_filecache_laundrette, nfsd_file_gc_worker);
|
||||
out:
|
||||
if (ret)
|
||||
clear_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags);
|
||||
return ret;
|
||||
out_notifier:
|
||||
lease_unregister_notifier(&nfsd_file_lease_notifier);
|
||||
|
@ -7154,6 +7154,7 @@ nfsd4_free_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
||||
switch (s->sc_type) {
|
||||
case SC_TYPE_DELEG:
|
||||
if (s->sc_status & SC_STATUS_REVOKED) {
|
||||
s->sc_status |= SC_STATUS_CLOSED;
|
||||
spin_unlock(&s->sc_lock);
|
||||
dp = delegstateid(s);
|
||||
list_del_init(&dp->dl_recall_lru);
|
||||
|
@ -434,6 +434,9 @@ static void nfsd_shutdown_net(struct net *net)
|
||||
{
|
||||
struct nfsd_net *nn = net_generic(net, nfsd_net_id);
|
||||
|
||||
if (!nn->nfsd_net_up)
|
||||
return;
|
||||
nfsd_export_flush(net);
|
||||
nfs4_state_shutdown_net(net);
|
||||
nfsd_reply_cache_shutdown(nn);
|
||||
nfsd_file_cache_shutdown_net(net);
|
||||
@ -549,11 +552,8 @@ void nfsd_destroy_serv(struct net *net)
|
||||
* other initialization has been done except the rpcb information.
|
||||
*/
|
||||
svc_rpcb_cleanup(serv, net);
|
||||
if (!nn->nfsd_net_up)
|
||||
return;
|
||||
|
||||
nfsd_shutdown_net(net);
|
||||
nfsd_export_flush(net);
|
||||
svc_destroy(&serv);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user