Linux NFS development
 help / color / mirror / Atom feed
From: Steve Dickson <SteveD@redhat.com>
To: Linux NFS Mailing list <linux-nfs@vger.kernel.org>
Subject: [PATCH] nfs-utils: Removed a number of warn_unused_result warnings
Date: Mon, 23 Mar 2009 10:08:06 -0400	[thread overview]
Message-ID: <49C797C6.8030102@RedHat.com> (raw)

Here is a patch that removes a number of annoying 'warn_unused_result' 
warnings that have recently popped up in Fedora builds.

Its probably a good thing to log these failures, but there is 
really not much we can do about them so I've logged the failures
as warnings... 

This exercise also illuminates all the different ways there
are to call syslog()... We really need to looking into creating
exactly one way for all apps in nfs-utils to log messages to
syslog().. Yeah.. Yeah... I know... Patches are welcome! ;-)

steved.
  

In recent Fedora builds, the '-D _FORTIFY_SOURCE=2' compile
flag has been set. This cause warnings to be generated when 
return values from reads/writes (and other calls) are not 
checked. The patch address those warnings. 

Signed-off-by: Steve Dickson <steved@redhat.com>
------------------------------------------

diff -up nfs-utils-1.1.5/support/nfs/cacheio.c.orig nfs-utils-1.1.5/support/nfs/cacheio.c
--- nfs-utils-1.1.5/support/nfs/cacheio.c.orig	2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/support/nfs/cacheio.c	2009-03-23 09:41:54.000000000 -0400
@@ -24,6 +24,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <time.h>
+#include <errno.h>
 
 void qword_add(char **bpp, int *lp, char *str)
 {
@@ -125,7 +126,10 @@ void qword_print(FILE *f, char *str)
 	char *bp = qword_buf;
 	int len = sizeof(qword_buf);
 	qword_add(&bp, &len, str);
-	fwrite(qword_buf, bp-qword_buf, 1, f);
+	if (fwrite(qword_buf, bp-qword_buf, 1, f) != 1) {
+		xlog_warn("qword_print: fwrite failed: errno %d (%s)",
+			errno, strerror(errno));
+	}
 }
 
 void qword_printhex(FILE *f, char *str, int slen)
@@ -133,7 +137,10 @@ void qword_printhex(FILE *f, char *str, 
 	char *bp = qword_buf;
 	int len = sizeof(qword_buf);
 	qword_addhex(&bp, &len, str, slen);
-	fwrite(qword_buf, bp-qword_buf, 1, f);
+	if (fwrite(qword_buf, bp-qword_buf, 1, f) != 1) {
+		xlog_warn("qword_printhex: fwrite failed: errno %d (%s)",
+			errno, strerror(errno));
+	}
 }
 
 void qword_printint(FILE *f, int num)
@@ -318,7 +325,10 @@ cache_flush(int force)
 		sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
 		fd = open(path, O_RDWR);
 		if (fd >= 0) {
-			write(fd, stime, strlen(stime));
+			if (write(fd, stime, strlen(stime)) != strlen(stime)) {
+				xlog_warn("Writing to '%s' failed: errno %d (%s)",
+				path, errno, strerror(errno));
+			}
 			close(fd);
 		}
 	}
diff -up nfs-utils-1.1.5/tools/locktest/testlk.c.orig nfs-utils-1.1.5/tools/locktest/testlk.c
--- nfs-utils-1.1.5/tools/locktest/testlk.c.orig	2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/tools/locktest/testlk.c	2009-03-23 08:33:10.000000000 -0400
@@ -81,7 +81,7 @@ main(int argc, char **argv)
 		if (fl.l_type == F_UNLCK) {
 			printf("%s: no conflicting lock\n", fname);
 		} else {
-			printf("%s: conflicting lock by %d on (%ld;%ld)\n",
+			printf("%s: conflicting lock by %d on (%lld;%lld)\n",
 				fname, fl.l_pid, fl.l_start, fl.l_len);
 		}
 		return 0;
diff -up nfs-utils-1.1.5/utils/gssd/svcgssd.c.orig nfs-utils-1.1.5/utils/gssd/svcgssd.c
--- nfs-utils-1.1.5/utils/gssd/svcgssd.c.orig	2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/gssd/svcgssd.c	2009-03-23 08:49:49.000000000 -0400
@@ -132,7 +132,11 @@ release_parent(void)
 	int status;
 
 	if (pipefds[1] > 0) {
-		write(pipefds[1], &status, 1);
+		if (write(pipefds[1], &status, 1) != 1) {
+			printerr(1, 
+				"WARN: writing to parent pipe failed: errno %d (%s)\n",
+				errno, strerror(errno));
+		}
 		close(pipefds[1]);
 		pipefds[1] = -1;
 	}
diff -up nfs-utils-1.1.5/utils/idmapd/idmapd.c.orig nfs-utils-1.1.5/utils/idmapd/idmapd.c
--- nfs-utils-1.1.5/utils/idmapd/idmapd.c.orig	2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/idmapd/idmapd.c	2009-03-23 08:53:44.000000000 -0400
@@ -169,7 +169,10 @@ flush_nfsd_cache(char *path, time_t now)
 	fd = open(path, O_RDWR);
 	if (fd == -1)
 		return -1;
-	write(fd, stime, strlen(stime));
+	if (write(fd, stime, strlen(stime)) != strlen(stime)) {
+		errx(1, "Flushing nfsd cache failed: errno %d (%s)",
+			errno, strerror(errno));
+	}
 	close(fd);
 	return 0;
 }
@@ -988,7 +991,10 @@ release_parent(void)
 	int status;
 
 	if (pipefds[1] > 0) {
-		write(pipefds[1], &status, 1);
+		if (write(pipefds[1], &status, 1) != 1) {
+			err(1, "Writing to parent pipe failed: errno %d (%s)\n",
+				errno, strerror(errno));
+		}
 		close(pipefds[1]);
 		pipefds[1] = -1;
 	}
diff -up nfs-utils-1.1.5/utils/mount/fstab.c.orig nfs-utils-1.1.5/utils/mount/fstab.c
--- nfs-utils-1.1.5/utils/mount/fstab.c.orig	2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/mount/fstab.c	2009-03-23 08:44:42.000000000 -0400
@@ -546,8 +546,12 @@ update_mtab (const char *dir, struct mnt
 	   * from the present mtab before renaming.
 	   */
 	    struct stat sbuf;
-	    if (stat (MOUNTED, &sbuf) == 0)
-		chown (MOUNTED_TEMP, sbuf.st_uid, sbuf.st_gid);
+	    if (stat (MOUNTED, &sbuf) == 0) {
+			if (chown (MOUNTED_TEMP, sbuf.st_uid, sbuf.st_gid) < 0) {
+				nfs_error(_("%s: error changing owner of %s: %s"),
+					progname, MOUNTED_TEMP, strerror (errno));
+			}
+		}
 	}
 
 	/* rename mtemp to mtab */
diff -up nfs-utils-1.1.5/utils/statd/monitor.c.orig nfs-utils-1.1.5/utils/statd/monitor.c
--- nfs-utils-1.1.5/utils/statd/monitor.c.orig	2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/statd/monitor.c	2009-03-23 09:25:20.000000000 -0400
@@ -204,7 +204,10 @@ sm_mon_1_svc(struct mon *argp, struct sv
 			e += sprintf(e, "%02x", 0xff & (argp->priv[i]));
 		if (e+1-buf != LINELEN) abort();
 		e += sprintf(e, " %s %s\n", mon_name, my_name);
-		write(fd, buf, e-buf);
+		if (write(fd, buf, e-buf) != (e-buf)) {
+			note(N_WARNING, "writing to %s failed: errno %d (%s)",
+				path, errno, strerror(errno));
+		}
 	}
 
 	free(path);
diff -up nfs-utils-1.1.5/utils/statd/sm-notify.c.orig nfs-utils-1.1.5/utils/statd/sm-notify.c
--- nfs-utils-1.1.5/utils/statd/sm-notify.c.orig	2009-03-23 08:26:22.000000000 -0400
+++ nfs-utils-1.1.5/utils/statd/sm-notify.c	2009-03-23 08:58:36.000000000 -0400
@@ -784,7 +784,10 @@ static int record_pid(void)
 	fd = open("/var/run/sm-notify.pid", O_CREAT|O_EXCL|O_WRONLY, 0600);
 	if (fd < 0)
 		return 0;
-	write(fd, pid, strlen(pid));
+	if (write(fd, pid, strlen(pid)) != strlen(pid))  {
+		nsm_log(LOG_WARNING, "Writing to pid file failed: errno %d(%s)",
+			errno, strerror(errno));
+	}
 	close(fd);
 	return 1;
 }
@@ -820,12 +823,16 @@ static void drop_privs(void)
 static void set_kernel_nsm_state(int state)
 {
 	int fd;
+	const char *file = "/proc/sys/fs/nfs/nsm_local_state";
 
-	fd = open("/proc/sys/fs/nfs/nsm_local_state",O_WRONLY);
+	fd = open(file ,O_WRONLY);
 	if (fd >= 0) {
 		char buf[20];
 		snprintf(buf, sizeof(buf), "%d", state);
-		write(fd, buf, strlen(buf));
+		if (write(fd, buf, strlen(buf)) != strlen(buf)) {
+			nsm_log(LOG_WARNING, "Writing to '%s' failed: errno %d (%s)",
+				file, errno, strerror(errno));
+		}
 		close(fd);
 	}
 }
diff -up nfs-utils-1.1.5/utils/statd/statd.c.orig nfs-utils-1.1.5/utils/statd/statd.c
--- nfs-utils-1.1.5/utils/statd/statd.c.orig	2009-03-05 06:42:56.000000000 -0500
+++ nfs-utils-1.1.5/utils/statd/statd.c	2009-03-23 09:21:27.000000000 -0400
@@ -179,14 +179,20 @@ static void create_pidfile(void)
 		    pidfile, strerror(errno));
 	fprintf(fp, "%d\n", getpid());
 	pidfd = dup(fileno(fp));
-	if (fclose(fp) < 0)
-		note(N_WARNING, "Flushing pid file failed.\n");
+	if (fclose(fp) < 0) {
+		note(N_WARNING, "Flushing pid file failed: errno %d (%s)\n",
+			errno, strerror(errno));
+	}
 }
 
 static void truncate_pidfile(void)
 {
-	if (pidfd >= 0)
-		ftruncate(pidfd, 0);
+	if (pidfd >= 0) {
+		if (ftruncate(pidfd, 0) < 0) {
+			note(N_WARNING, "truncating pid file failed: errno %d (%s)\n",
+				errno, strerror(errno));
+		}
+	}
 }
 
 static void drop_privs(void)
@@ -207,9 +213,12 @@ static void drop_privs(void)
 	/* better chown the pid file before dropping, as if it
 	 * if over nfs we might loose access
 	 */
-	if (pidfd >= 0)
-		fchown(pidfd, st.st_uid, st.st_gid);
-
+	if (pidfd >= 0) {
+		if (fchown(pidfd, st.st_uid, st.st_gid) < 0) {
+			note(N_ERROR, "Unable to change owner of %s: %d (%s)",
+					SM_DIR, strerror (errno));
+		}
+	}
 	setgroups(0, NULL);
 	if (setgid(st.st_gid) == -1
 	    || setuid(st.st_uid) == -1) {
@@ -495,7 +504,10 @@ int main (int argc, char **argv)
 	/* If we got this far, we have successfully started, so notify parent */
 	if (pipefds[1] > 0) {
 		status = 0;
-		write(pipefds[1], &status, 1);
+		if (write(pipefds[1], &status, 1) != 1) {
+			note(N_WARNING, "writing to parent pipe failed: errno %d (%s)\n",
+				errno, strerror(errno));
+		}
 		close(pipefds[1]);
 		pipefds[1] = -1;
 	}
@@ -534,17 +546,23 @@ static void
 load_state_number(void)
 {
 	int fd;
+	const char *file = "/proc/sys/fs/nfs/nsm_local_state";
 
 	if ((fd = open(SM_STAT_PATH, O_RDONLY)) == -1)
 		return;
 
-	read(fd, &MY_STATE, sizeof(MY_STATE));
+	if (read(fd, &MY_STATE, sizeof(MY_STATE)) != sizeof(MY_STATE)) {
+		note(N_WARNING, "Unable to read state from '%s': errno %d (%s)",
+				SM_STAT_PATH, errno, strerror(errno));
+	}
 	close(fd);
-	fd = open("/proc/sys/fs/nfs/nsm_local_state",O_WRONLY);
+	fd = open(file, O_WRONLY);
 	if (fd >= 0) {
 		char buf[20];
 		snprintf(buf, sizeof(buf), "%d", MY_STATE);
-		write(fd, buf, strlen(buf));
+		if (write(fd, buf, strlen(buf)) != strlen(buf))
+			note(N_WARNING, "Writing to '%s' failed: errno %d (%s)",
+				file, errno, strerror(errno));
 		close(fd);
 	}
 

             reply	other threads:[~2009-03-23 14:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-23 14:08 Steve Dickson [this message]
     [not found] ` <49C797C6.8030102-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 16:19   ` [PATCH] nfs-utils: Removed a number of warn_unused_result warnings Chuck Lever
2009-03-24 16:56     ` Steve Dickson
     [not found]       ` <49C910C3.2090700-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 17:08         ` Chuck Lever
2009-03-24 17:36           ` Steve Dickson
     [not found]             ` <49C91A2F.90501-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 17:44               ` Chuck Lever
2009-03-24 17:51                 ` Steve Dickson
     [not found]                   ` <49C91DB7.1050006-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-03-24 19:35                     ` Chuck Lever
2009-03-25 14:39                       ` Steve Dickson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49C797C6.8030102@RedHat.com \
    --to=steved@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox