mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
nfsd-6.16 fixes:
- Two fixes for commits in the nfsd-6.16 merge - One fix for the recently-added NFSD netlink facility - One fix for a remote SunRPC crasher -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEKLLlsBKG3yQ88j7+M2qzM29mf5cFAmhWykQACgkQM2qzM29m f5cfIA/+MtqpF8iHCNWBk2mmgQHtfS78qhQexEsQ69F1k90+bzCJ9Mu7AZT67xRZ 2E6Fm3gyJuFPaJ9YOGewyD6OV/eE0SioPQteZIIwUVclKcoyVtqJpc57A/aQfMJm Te1bPWYrc5jfxoF/QzkOjzd4KWXOej2nIqsybFIDK5uTe7gn9QpPiFL8ePRuf7bJ 5oWBTZPpmuWpDcebQrz56OT0bvvrCNH9EV9TZNYwVa/B7yl3UNHwM2YB5O9m2Rl7 GUeWytc2Y7WgdDJe9poPwNrYyXFb8JX4pCbS54q5wCRLYLDgo8PsgsFCAFfgjx0l ArATKDhzfYK0azASDtJma2eCJkrm4/nXRNFON7xucN79pYRh9GChcmhhfubb8Yo3 HopUaCSLOgy7PNsbbz3lNREn5uBpomeK1Mb88/UkJ/d8fmKGIO1ITTlarazYv2w5 GgmzZSBS43VdUmipqNyddIMg2uy7uaeAQZpr4jHVFVctPypjXCn/zIrhG2mmjRhW M7PCJqtFj0a7DM48LA6r9K8N4Yi7EoSQKNAKfwduE++XXYWgBk9blaF/7om/fIRJ VJm/RfiuFuyGaxCLd7WpPpASeS/nq410BMV5/kxol+UgiCxk8xjsvU7y8OWLOl7S rUend5Yei7/h0NGoSmQPnBoYnb1YuTeMMzjfaRWSsV5gbvVDejQ= =1C8u -----END PGP SIGNATURE----- Merge tag 'nfsd-6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux Pull nfsd fixes from Chuck Lever: - Two fixes for commits in the nfsd-6.16 merge - One fix for the recently-added NFSD netlink facility - One fix for a remote SunRPC crasher * tag 'nfsd-6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux: sunrpc: handle SVC_GARBAGE during svc auth processing as auth error nfsd: use threads array as-is in netlink interface SUNRPC: Cleanup/fix initial rq_pages allocation NFSD: Avoid corruption of a referring call list
This commit is contained in:
commit
739a6c93cc
3 changed files with 6 additions and 17 deletions
|
@ -1409,6 +1409,7 @@ void nfsd41_cb_referring_call(struct nfsd4_callback *cb,
|
|||
out:
|
||||
if (!rcl->__nr_referring_calls) {
|
||||
cb->cb_nr_referring_call_list--;
|
||||
list_del(&rcl->__list);
|
||||
kfree(rcl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1611,7 +1611,7 @@ out_unlock:
|
|||
*/
|
||||
int nfsd_nl_threads_set_doit(struct sk_buff *skb, struct genl_info *info)
|
||||
{
|
||||
int *nthreads, count = 0, nrpools, i, ret = -EOPNOTSUPP, rem;
|
||||
int *nthreads, nrpools = 0, i, ret = -EOPNOTSUPP, rem;
|
||||
struct net *net = genl_info_net(info);
|
||||
struct nfsd_net *nn = net_generic(net, nfsd_net_id);
|
||||
const struct nlattr *attr;
|
||||
|
@ -1623,12 +1623,11 @@ int nfsd_nl_threads_set_doit(struct sk_buff *skb, struct genl_info *info)
|
|||
/* count number of SERVER_THREADS values */
|
||||
nlmsg_for_each_attr(attr, info->nlhdr, GENL_HDRLEN, rem) {
|
||||
if (nla_type(attr) == NFSD_A_SERVER_THREADS)
|
||||
count++;
|
||||
nrpools++;
|
||||
}
|
||||
|
||||
mutex_lock(&nfsd_mutex);
|
||||
|
||||
nrpools = max(count, nfsd_nrpools(net));
|
||||
nthreads = kcalloc(nrpools, sizeof(int), GFP_KERNEL);
|
||||
if (!nthreads) {
|
||||
ret = -ENOMEM;
|
||||
|
|
|
@ -638,8 +638,6 @@ EXPORT_SYMBOL_GPL(svc_destroy);
|
|||
static bool
|
||||
svc_init_buffer(struct svc_rqst *rqstp, const struct svc_serv *serv, int node)
|
||||
{
|
||||
unsigned long ret;
|
||||
|
||||
rqstp->rq_maxpages = svc_serv_maxpages(serv);
|
||||
|
||||
/* rq_pages' last entry is NULL for historical reasons. */
|
||||
|
@ -649,9 +647,7 @@ svc_init_buffer(struct svc_rqst *rqstp, const struct svc_serv *serv, int node)
|
|||
if (!rqstp->rq_pages)
|
||||
return false;
|
||||
|
||||
ret = alloc_pages_bulk_node(GFP_KERNEL, node, rqstp->rq_maxpages,
|
||||
rqstp->rq_pages);
|
||||
return ret == rqstp->rq_maxpages;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1375,7 +1371,8 @@ svc_process_common(struct svc_rqst *rqstp)
|
|||
case SVC_OK:
|
||||
break;
|
||||
case SVC_GARBAGE:
|
||||
goto err_garbage_args;
|
||||
rqstp->rq_auth_stat = rpc_autherr_badcred;
|
||||
goto err_bad_auth;
|
||||
case SVC_SYSERR:
|
||||
goto err_system_err;
|
||||
case SVC_DENIED:
|
||||
|
@ -1516,14 +1513,6 @@ err_bad_proc:
|
|||
*rqstp->rq_accept_statp = rpc_proc_unavail;
|
||||
goto sendit;
|
||||
|
||||
err_garbage_args:
|
||||
svc_printk(rqstp, "failed to decode RPC header\n");
|
||||
|
||||
if (serv->sv_stats)
|
||||
serv->sv_stats->rpcbadfmt++;
|
||||
*rqstp->rq_accept_statp = rpc_garbage_args;
|
||||
goto sendit;
|
||||
|
||||
err_system_err:
|
||||
if (serv->sv_stats)
|
||||
serv->sv_stats->rpcbadfmt++;
|
||||
|
|
Loading…
Add table
Reference in a new issue