On 22/01/14 09:59, Jeff Layton wrote: > Some krb5 routines will attempt to access files in the user's home > directory. This is problematic for gssd when the user's homedir is > on a kerberized NFS mount as it will end up deadlocked. > > Fix this by setting $HOME unconditionally to "/". > > Fixes this Fedora bug: > > https://bugzilla.redhat.com/show_bug.cgi?id=1052902 > > Reported-by: Enrico Scholz <rh-bugzilla@xxxxxxx> > Reported-by: nmorey <nmorey@xxxxxxxxx> > Tested-by: Michael Young <m.a.young@xxxxxxxxxxxx> > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> Committed... steved. > --- > utils/gssd/gssd.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c > index fdad153..611ef1a 100644 > --- a/utils/gssd/gssd.c > +++ b/utils/gssd/gssd.c > @@ -46,6 +46,7 @@ > > #include <unistd.h> > #include <err.h> > +#include <errno.h> > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > @@ -161,6 +162,18 @@ main(int argc, char *argv[]) > } > } > > + /* > + * Some krb5 routines try to scrape info out of files in the user's > + * home directory. This can easily deadlock when that homedir is on a > + * kerberized NFS mount. By setting $HOME unconditionally to "/", we > + * prevent this behavior in routines that use $HOME in preference to > + * the results of getpw*. > + */ > + if (setenv("HOME", "/", 1)) { > + printerr(1, "Unable to set $HOME: %s\n", strerror(errno)); > + exit(1); > + } > + > i = 0; > ccachesearch[i++] = strtok(ccachedir, ":"); > do { > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html