commit 0712b5507866d6b3c900623eb1f81fffaec80ae2 Author: Jianhong Yin Date: Thu Feb 2 06:21:15 2017 -0500 mount: fix mount fail that caused by uninitialized struct From: "Jianhong.Yin" recent changes of utils/mount cause a regression mount fail: https://bugzilla.redhat.com/show_bug.cgi?id=1415024 can not reproduce it on x86_64(gcc on x86_64 might do struct initialize by default, I'm not sure). but it can be reproduced always on platform ppc64le aarch64. Signed-off-by: Jianhong Yin Signed-off-by: Steve Dickson diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c index 4d18d35..77125f1 100644 --- a/utils/gssd/gssd.c +++ b/utils/gssd/gssd.c @@ -87,6 +87,7 @@ int root_uses_machine_creds = 1; unsigned int context_timeout = 0; unsigned int rpc_timeout = 5; char *preferred_realm = NULL; +char *ccachedir = NULL; /* Avoid DNS reverse lookups on server names */ static bool avoid_dns = true; int thread_started = false; @@ -837,18 +838,9 @@ usage(char *progname) exit(1); } -int -main(int argc, char *argv[]) +inline static void +read_gss_conf(void) { - int fg = 0; - int verbosity = 0; - int rpc_verbosity = 0; - int opt; - int i; - extern char *optarg; - char *progname; - char *ccachedir = NULL; - struct event sighup_ev; char *s; conf_init(); @@ -877,6 +869,22 @@ main(int argc, char *argv[]) if (s) preferred_realm = s; +} + +int +main(int argc, char *argv[]) +{ + int fg = 0; + int verbosity = 0; + int rpc_verbosity = 0; + int opt; + int i; + extern char *optarg; + char *progname; + struct event sighup_ev; + + read_gss_conf(); + while ((opt = getopt(argc, argv, "DfvrlmnMp:k:d:t:T:R:")) != -1) { switch (opt) { case 'f': diff --git a/utils/mount/network.c b/utils/mount/network.c index 7dceb2d..d1c8fec 100644 --- a/utils/mount/network.c +++ b/utils/mount/network.c @@ -1638,6 +1638,7 @@ int nfs_options2pmap(struct mount_options *options, struct pmap *nfs_pmap, struct pmap *mnt_pmap) { struct nfs_version version; + memset(&version, 0, sizeof(version)); if (!nfs_nfs_program(options, &nfs_pmap->pm_prog)) return 0; diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c index 387d734..a9ff95d 100644 --- a/utils/mount/stropts.c +++ b/utils/mount/stropts.c @@ -517,6 +517,10 @@ nfs_rewrite_pmap_mount_options(struct mount_options *options, int checkv4) unsigned long protocol; struct pmap mnt_pmap; + /* initialize structs */ + memset(&nfs_pmap, 0, sizeof(struct pmap)); + memset(&mnt_pmap, 0, sizeof(struct pmap)); + /* * Version and transport negotiation is not required * and does not work for RDMA mounts.