linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: steved@redhat.com
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH 12/15] mount.nfs: Eliminate compiler warnings in utils/mount/network.c
Date: Sun, 10 Oct 2010 20:06:00 -0400	[thread overview]
Message-ID: <20101011000600.6667.50880.stgit@ellison.1015granger.net> (raw)
In-Reply-To: <20101010234836.6667.4057.stgit@ellison.1015granger.net>

Clean up.

network.c: In function ‘get_socket’:
network.c:431: warning: dereferencing type-punned pointer might break strict-aliasing rules

network.c: In function ‘probe_bothports’:
network.c:759: warning: dereferencing type-punned pointer might break strict-aliasing rules
network.c:762: warning: dereferencing type-punned pointer might break strict-aliasing rules

network.c: In function ‘nfs_probe_statd’:
network.c:775: warning: dereferencing type-punned pointer might break strict-aliasing rules

network.c: In function ‘nfs_call_umount’:
network.c:904: warning: dereferencing type-punned pointer might break strict-aliasing rules

network.c: In function ‘nfs_ca_sockname’:
network.c:1106: warning: dereferencing type-punned pointer might break strict-aliasing rules
network.c:1112: warning: dereferencing type-punned pointer might break strict-aliasing rules

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 utils/mount/network.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/utils/mount/network.c b/utils/mount/network.c
index d612427..62973cf 100644
--- a/utils/mount/network.c
+++ b/utils/mount/network.c
@@ -59,6 +59,8 @@
 #define CONNECT_TIMEOUT	(20)
 #define MOUNT_TIMEOUT	(30)
 
+#define SAFE_SOCKADDR(x)	(struct sockaddr *)(char *)(x)
+
 extern int nfs_mount_data_version;
 extern char *progname;
 extern int verbose;
@@ -428,12 +430,12 @@ static int get_socket(struct sockaddr_in *saddr, unsigned int p_prot,
 		if (bindresvport(so, &laddr) < 0)
 			goto err_bindresvport;
 	} else {
-		cc = bind(so, (struct sockaddr *)&laddr, namelen);
+		cc = bind(so, SAFE_SOCKADDR(&laddr), namelen);
 		if (cc < 0)
 			goto err_bind;
 	}
 	if (type == SOCK_STREAM || (conn && type == SOCK_DGRAM)) {
-		cc = connect_to(so, (struct sockaddr *)saddr, namelen,
+		cc = connect_to(so, SAFE_SOCKADDR(saddr), namelen,
 				timeout);
 		if (cc < 0)
 			goto err_connect;
@@ -756,11 +758,12 @@ int nfs_probe_bothports(const struct sockaddr *mnt_saddr,
  */
 int probe_bothports(clnt_addr_t *mnt_server, clnt_addr_t *nfs_server)
 {
-	return nfs_probe_bothports((struct sockaddr *)&mnt_server->saddr,
-					sizeof(mnt_server->saddr),
+	struct sockaddr *mnt_addr = SAFE_SOCKADDR(&mnt_server->saddr);
+	struct sockaddr *nfs_addr = SAFE_SOCKADDR(&nfs_server->saddr);
+
+	return nfs_probe_bothports(mnt_addr, sizeof(mnt_server->saddr),
 					&mnt_server->pmap,
-					(struct sockaddr *)&nfs_server->saddr,
-					sizeof(nfs_server->saddr),
+					nfs_addr, sizeof(nfs_server->saddr),
 					&nfs_server->pmap);
 }
 
@@ -772,7 +775,7 @@ static int nfs_probe_statd(void)
 	};
 	rpcprog_t program = nfs_getrpcbyname(NSMPROG, nfs_ns_pgmtbl);
 
-	return nfs_getport_ping((struct sockaddr *)&addr, sizeof(addr),
+	return nfs_getport_ping(SAFE_SOCKADDR(&addr), sizeof(addr),
 				program, (rpcvers_t)1, IPPROTO_UDP);
 }
 
@@ -901,7 +904,7 @@ int nfs_advise_umount(const struct sockaddr *sap, const socklen_t salen,
  */
 int nfs_call_umount(clnt_addr_t *mnt_server, dirpath *argp)
 {
-	struct sockaddr *sap = (struct sockaddr *)&mnt_server->saddr;
+	struct sockaddr *sap = SAFE_SOCKADDR(&mnt_server->saddr);
 	socklen_t salen = sizeof(mnt_server->saddr);
 	struct pmap *pmap = &mnt_server->pmap;
 	CLIENT *clnt;
@@ -1103,13 +1106,13 @@ static int nfs_ca_sockname(const struct sockaddr *sap, const socklen_t salen,
 
 	switch (sap->sa_family) {
 	case AF_INET:
-		if (bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
+		if (bind(sock, SAFE_SOCKADDR(&sin), sizeof(sin)) < 0) {
 			close(sock);
 			return 0;
 		}
 		break;
 	case AF_INET6:
-		if (bind(sock, (struct sockaddr *)&sin6, sizeof(sin6)) < 0) {
+		if (bind(sock, SAFE_SOCKADDR(&sin6), sizeof(sin6)) < 0) {
 			close(sock);
 			return 0;
 		}


  parent reply	other threads:[~2010-10-11  0:06 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-11  0:04 [PATCH 00/15] Fixes for nfs-utils-1.2.4 Chuck Lever
2010-10-11  0:04 ` [PATCH 01/15] mountd: Clear mountd registrations at start up Chuck Lever
2010-10-13 14:55   ` Steve Dickson
2010-10-13 15:12     ` Steve Dickson
2010-10-13 20:12       ` Chuck Lever
2010-10-13 20:39         ` Steve Dickson
2010-10-14 13:21         ` Steve Dickson
2010-10-11  0:04 ` [PATCH 02/15] libnfs.a: Allow multiple RPC listeners to share listener port number Chuck Lever
2010-10-11  0:20   ` Jim Rees
2010-10-11 13:22     ` Steve Dickson
2010-10-11 16:04       ` Chuck Lever
2010-10-11 20:00         ` Jim Rees
     [not found]           ` <20101011200017.GA2451-8f4Pc2RrbJmHXe+LvDLADg@public.gmane.org>
2010-10-13 14:17             ` Steve Dickson
2010-10-11  0:04 ` [PATCH 03/15] export: Ensure that we free struct exportent->e_uuid Chuck Lever
2010-10-11  0:04 ` [PATCH 04/15] mount.nfs: Eliminate compiler warnings Chuck Lever
2010-10-11 13:32   ` Steve Dickson
2010-10-11 16:18     ` Chuck Lever
2010-10-11 16:45       ` Steve Dickson
2010-10-11  0:04 ` [PATCH 05/15] mount.nfs: Eliminate compiler warning in utils/mount/mount.c Chuck Lever
2010-10-11  0:05 ` [PATCH 06/15] mount.nfs: Eliminate compiler warnings in utils/mount/version.h Chuck Lever
2010-10-11  0:05 ` [PATCH 07/15] mount.nfs: Eliminate compiler warning in utils/mount/mount.c Chuck Lever
2010-10-11  0:05 ` [PATCH 08/15] mount.nfs: Eliminate compiler warnings " Chuck Lever
2010-10-11  0:05 ` [PATCH 09/15] mount.nfs: Eliminate compiler warning in utils/mount/nfsumount.c Chuck Lever
2010-10-11  0:05 ` [PATCH 10/15] " Chuck Lever
2010-10-11  0:05 ` [PATCH 11/15] mount.nfs: Eliminate compiler warning in utils/mount/parse_opt.c Chuck Lever
2010-10-11  0:06 ` Chuck Lever [this message]
2010-10-11  0:06 ` [PATCH 13/15] mount.nfs: mountproto does not support RDMA Chuck Lever
2010-10-11  0:06 ` [PATCH 14/15] umount.nfs: Distinguish between nfs4 and nfs mounts Chuck Lever
2010-10-11  0:06 ` [PATCH 15/15] mount.nfs: don't show "remount" flag in /etc/mtab Chuck Lever
2010-10-11  4:16 ` [PATCH 00/15] Fixes for nfs-utils-1.2.4 Neil Brown
2010-10-11 15:18   ` Chuck Lever
     [not found] ` <20101010234836.6667.4057.stgit-ewv44WTpT0t9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2010-10-14 14:37   ` 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=20101011000600.6667.50880.stgit@ellison.1015granger.net \
    --to=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=steved@redhat.com \
    /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;
as well as URLs for NNTP newsgroup(s).