From e5de6eb818b37a48c051933321ae09f44a36c870 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Wed, 13 Dec 2006 15:10:07 +0000 Subject: [PATCH] > - Stopped v4 umounts from ping rpc.mountd (bz 215553) --- nfs-utils-1.0.10-v4-umounts.patch | 76 +++++++++++++++++++++++++++++++ nfs-utils.spec | 7 ++- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 nfs-utils-1.0.10-v4-umounts.patch diff --git a/nfs-utils-1.0.10-v4-umounts.patch b/nfs-utils-1.0.10-v4-umounts.patch new file mode 100644 index 0000000..695cc0b --- /dev/null +++ b/nfs-utils-1.0.10-v4-umounts.patch @@ -0,0 +1,76 @@ +--- nfs-utils-1.0.10/utils/mount/nfsumount.c.orig 2006-12-07 10:25:41.000000000 -0500 ++++ nfs-utils-1.0.10/utils/mount/nfsumount.c 2006-12-11 15:00:29.000000000 -0500 +@@ -333,7 +333,7 @@ void umount_usage() + + int nfsumount(int argc, char *argv[]) + { +- int c, ret; ++ int c, ret, v4=0; + char *spec; + struct mntentchn *mc; + +@@ -371,39 +371,33 @@ int nfsumount(int argc, char *argv[]) + mc = getmntdirbackward(spec, NULL); + if (!mc) + mc = getmntdevbackward(spec, NULL); +- if (!mc && verbose) +- printf(_("Could not find %s in mtab\n"), spec); +- +- if(mc) { +- if(contains(mc->m.mnt_opts, "user") && getuid() != 0) { +- struct passwd *pw = getpwuid(getuid()); +- if(!pw || strcmp(pw->pw_name, get_value(mc->m.mnt_opts, "user="))) { +- fprintf(stderr, "%s: permission denied to unmount %s\n", +- progname, spec); +- exit(1); +- } +- } else { +- if(!contains(mc->m.mnt_opts, "users") && getuid() != 0) { +- fprintf(stderr, "%s: only root can unmount %s from %s\n", +- progname, mc->m.mnt_fsname, mc->m.mnt_dir); +- exit(1); +- } +- } +- +- ret = 0; +- if(!force && !lazy) +- ret = _nfsumount(mc->m.mnt_fsname, mc->m.mnt_opts); +- if(!ret) +- ret = add_mtab2(mc->m.mnt_fsname, mc->m.mnt_dir, +- mc->m.mnt_type, mc->m.mnt_opts, mc); ++ if (mc == NULL) { ++ fprintf(stderr, "%s: Unable to find '%s' in mount table\n", ++ progname, spec); ++ exit(1); + } +- else { +- ret = 0; +- if(!force && !lazy) +- ret = _nfsumount(spec, NULL); +- if(!ret) +- ret = add_mtab2(spec, spec, spec, spec, NULL); ++ if(contains(mc->m.mnt_opts, "user") && getuid() != 0) { ++ struct passwd *pw = getpwuid(getuid()); ++ if(!pw || strcmp(pw->pw_name, get_value(mc->m.mnt_opts, "user="))) { ++ fprintf(stderr, "%s: permission denied to unmount %s\n", ++ progname, spec); ++ exit(1); ++ } ++ } else { ++ if(!contains(mc->m.mnt_opts, "users") && getuid() != 0) { ++ fprintf(stderr, "%s: only root can unmount %s from %s\n", ++ progname, mc->m.mnt_fsname, mc->m.mnt_dir); ++ exit(1); ++ } + } ++ v4 = contains(mc->m.mnt_type, "nfs4"); ++ ++ ret = 0; ++ if(!force && !lazy && !v4) ++ ret = _nfsumount(mc->m.mnt_fsname, mc->m.mnt_opts); ++ if(!ret) ++ ret = add_mtab2(mc->m.mnt_fsname, mc->m.mnt_dir, ++ mc->m.mnt_type, mc->m.mnt_opts, mc); + + return(ret); + } diff --git a/nfs-utils.spec b/nfs-utils.spec index bb331f3..c8eb8b7 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -1,7 +1,7 @@ Summary: NFS utlilities and supporting clients and daemons for the kernel NFS server. Name: nfs-utils Version: 1.0.10 -Release: 4%{?dist} +Release: 5%{?dist} Epoch: 1 # group all 32bit related archs @@ -45,6 +45,7 @@ Patch76: nfs-utils-1.0.9-mount-remount.patch Patch77: nfs-utils-1.0.10-export-nosubtree.patch Patch78: nfs-utils-1.0.10-mount-nfsvers.patch Patch79: nfs-utils-1.0.10-udp-no-connect.patch +Patch80: nfs-utils-1.0.10-v4-umounts.patch %if %{enablefscache} Patch90: nfs-utils-1.0.9-mount-fsc.patch @@ -111,6 +112,7 @@ This package also contains the mount.nfs and umount.nfs program. %patch77 -p1 %patch78 -p1 %patch79 -p1 +%patch80 -p1 %if %{enablefscache} %patch90 -p1 %endif @@ -288,6 +290,9 @@ fi %endif %changelog +* Wed Dec 13 2006 Steve Dickson 1.0.10-5 +- Stopped v4 umounts from ping rpc.mountd (bz 215553) + * Wed Nov 28 2006 Steve Dickson 1.0.10-4 - Doing a connect on UDP sockets causes the linux network stack to reject UDP patches from multi-home server with