Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b444cc9 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

svcrpc: remove handling of unknown errors from svc_recv



svc_recv() returns only -EINTR or -EAGAIN.  If we really want to worry
about the case where it has a bug that causes it to return something
else, we could stick a WARN() in svc_recv.  But it's silly to require
every caller to have all this boilerplate to handle that case.

Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 9f9d2ebe
Loading
Loading
Loading
Loading
+2 −15
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ static void restart_grace(void)
static int
lockd(void *vrqstp)
{
	int		err = 0, preverr = 0;
	int		err = 0;
	struct svc_rqst *rqstp = vrqstp;

	/* try_to_freeze() is called from svc_recv() */
@@ -165,21 +165,8 @@ lockd(void *vrqstp)
		 * recvfrom routine.
		 */
		err = svc_recv(rqstp, timeout);
		if (err == -EAGAIN || err == -EINTR) {
			preverr = err;
		if (err == -EAGAIN || err == -EINTR)
			continue;
		}
		if (err < 0) {
			if (err != preverr) {
				printk(KERN_WARNING "%s: unexpected error "
					"from svc_recv (%d)\n", __func__, err);
				preverr = err;
			}
			schedule_timeout_interruptible(HZ);
			continue;
		}
		preverr = err;

		dprintk("lockd: request from %s\n",
				svc_print_addr(rqstp, buf, sizeof(buf)));

+2 −14
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ unsigned short nfs_callback_tcpport6;
static int
nfs4_callback_svc(void *vrqstp)
{
	int err, preverr = 0;
	int err;
	struct svc_rqst *rqstp = vrqstp;

	set_freezable();
@@ -55,20 +55,8 @@ nfs4_callback_svc(void *vrqstp)
		 * Listen for a request on the socket
		 */
		err = svc_recv(rqstp, MAX_SCHEDULE_TIMEOUT);
		if (err == -EAGAIN || err == -EINTR) {
			preverr = err;
		if (err == -EAGAIN || err == -EINTR)
			continue;
		}
		if (err < 0) {
			if (err != preverr) {
				printk(KERN_WARNING "NFS: %s: unexpected error "
					"from svc_recv (%d)\n", __func__, err);
				preverr = err;
			}
			schedule_timeout_uninterruptible(HZ);
			continue;
		}
		preverr = err;
		svc_process(rqstp);
	}
	return 0;
+1 −11
Original line number Diff line number Diff line
@@ -487,7 +487,7 @@ static int
nfsd(void *vrqstp)
{
	struct svc_rqst *rqstp = (struct svc_rqst *) vrqstp;
	int err, preverr = 0;
	int err;

	/* Lock module and set up kernel thread */
	mutex_lock(&nfsd_mutex);
@@ -534,16 +534,6 @@ nfsd(void *vrqstp)
			;
		if (err == -EINTR)
			break;
		else if (err < 0) {
			if (err != preverr) {
				printk(KERN_WARNING "%s: unexpected error "
					"from svc_recv (%d)\n", __func__, -err);
				preverr = err;
			}
			schedule_timeout_uninterruptible(HZ);
			continue;
		}

		validate_process_creds();
		svc_process(rqstp);
		validate_process_creds();