X-Git-Url: http://git.agner.ch/gitweb/?a=blobdiff_plain;f=net%2Fsunrpc%2Fsvc.c;h=dbf12ac5ecb7f611fac1a06d5db643a7a5a39ac4;hb=982197277c85018cc6eb77f1d3bef17933b0c5fd;hp=c6abf1a6ba956230bd65c97df4fb28d9c93f6edd;hpb=24ffb93872f7363a01ad639e3c8a9889b46c3f0a;p=linux-drm-fsl-dcu.git diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index c6abf1a6ba95..dbf12ac5ecb7 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c @@ -323,7 +323,9 @@ svc_pool_map_set_cpumask(struct task_struct *task, unsigned int pidx) * The caller checks for sv_nrpools > 1, which * implies that we've been initialized. */ - BUG_ON(m->count == 0); + WARN_ON_ONCE(m->count == 0); + if (m->count == 0) + return; switch (m->mode) { case SVC_POOL_PERCPU: @@ -584,7 +586,9 @@ svc_init_buffer(struct svc_rqst *rqstp, unsigned int size, int node) * We assume one is at most one page */ arghi = 0; - BUG_ON(pages > RPCSVC_MAXPAGES); + WARN_ON_ONCE(pages > RPCSVC_MAXPAGES); + if (pages > RPCSVC_MAXPAGES) + pages = RPCSVC_MAXPAGES; while (pages) { struct page *p = alloc_pages_node(node, GFP_KERNEL, 0); if (!p) @@ -945,7 +949,9 @@ int svc_register(const struct svc_serv *serv, struct net *net, unsigned int i; int error = 0; - BUG_ON(proto == 0 && port == 0); + WARN_ON_ONCE(proto == 0 && port == 0); + if (proto == 0 && port == 0) + return -EINVAL; for (progp = serv->sv_program; progp; progp = progp->pg_next) { for (i = 0; i < progp->pg_nvers; i++) {