- statd: not unlinking host files
This commit is contained in:
parent
70f89631d6
commit
c6aa18e509
98
nfs-utils-1.1.4-statd-xunlink.patch
Normal file
98
nfs-utils-1.1.4-statd-xunlink.patch
Normal file
@ -0,0 +1,98 @@
|
||||
commit bc870150cc2116584aee288d15ac2b9a2f825ff5
|
||||
Author: Steve Dickson <steved@redhat.com>
|
||||
Date: Wed Dec 17 16:41:35 2008 -0500
|
||||
|
||||
statd: not unlinking host files
|
||||
|
||||
Statd is not unlinking host files during SM_UNMON and
|
||||
SM_UNMON_ALL calls because the given host is still on the run-time
|
||||
notify list (rtnl) and the check flag is set when xunlink() is
|
||||
called. But the next thing the caller of xunlink() does is
|
||||
remove the host from the rtnl list which means the
|
||||
unlink will never happen.
|
||||
|
||||
So this patch removes the check flag from xunlink() since
|
||||
its not needed and correctly allocates and frees memory
|
||||
used by xunlink().
|
||||
|
||||
Signed-off-by: Steve Dickson <steved@redhat.com>
|
||||
|
||||
diff --git a/utils/statd/misc.c b/utils/statd/misc.c
|
||||
index fd201b4..7256291 100644
|
||||
--- a/utils/statd/misc.c
|
||||
+++ b/utils/statd/misc.c
|
||||
@@ -53,23 +53,25 @@ xstrdup (const char *string)
|
||||
|
||||
|
||||
/*
|
||||
- * Call with check=1 to verify that this host is not still on the rtnl
|
||||
- * before unlinking file.
|
||||
+ * Unlinking a file.
|
||||
*/
|
||||
void
|
||||
-xunlink (char *path, char *host, short int check)
|
||||
+xunlink (char *path, char *host)
|
||||
{
|
||||
- char *tozap;
|
||||
+ char *tozap;
|
||||
|
||||
- tozap=alloca (strlen(path)+strlen(host)+2);
|
||||
- sprintf (tozap, "%s/%s", path, host);
|
||||
+ tozap = malloc(strlen(path)+strlen(host)+2);
|
||||
+ if (tozap == NULL) {
|
||||
+ note(N_ERROR, "xunlink: malloc failed: errno %d (%s)",
|
||||
+ errno, strerror(errno));
|
||||
+ return;
|
||||
+ }
|
||||
+ sprintf (tozap, "%s/%s", path, host);
|
||||
|
||||
- if (!check || !nlist_gethost(rtnl, host, 0)) {
|
||||
- if (unlink (tozap) == -1)
|
||||
- note (N_ERROR, "unlink (%s): %s", tozap, strerror (errno));
|
||||
- else
|
||||
- dprintf (N_DEBUG, "Unlinked %s", tozap);
|
||||
- }
|
||||
- else
|
||||
- dprintf (N_DEBUG, "Not unlinking %s--host still monitored.", tozap);
|
||||
+ if (unlink (tozap) == -1)
|
||||
+ note(N_ERROR, "unlink (%s): %s", tozap, strerror (errno));
|
||||
+ else
|
||||
+ dprintf (N_DEBUG, "Unlinked %s", tozap);
|
||||
+
|
||||
+ free(tozap);
|
||||
}
|
||||
diff --git a/utils/statd/monitor.c b/utils/statd/monitor.c
|
||||
index a6a1d9c..24c2531 100644
|
||||
--- a/utils/statd/monitor.c
|
||||
+++ b/utils/statd/monitor.c
|
||||
@@ -352,7 +352,7 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp)
|
||||
/* PRC: do the HA callout: */
|
||||
ha_callout("del-client", mon_name, my_name, -1);
|
||||
|
||||
- xunlink(SM_DIR, clnt->dns_name, 1);
|
||||
+ xunlink(SM_DIR, clnt->dns_name);
|
||||
nlist_free(&rtnl, clnt);
|
||||
|
||||
return (&result);
|
||||
@@ -404,7 +404,7 @@ sm_unmon_all_1_svc(struct my_id *argp, struct svc_req *rqstp)
|
||||
temp = NL_NEXT(clnt);
|
||||
/* PRC: do the HA callout: */
|
||||
ha_callout("del-client", mon_name, my_name, -1);
|
||||
- xunlink(SM_DIR, clnt->dns_name, 1);
|
||||
+ xunlink(SM_DIR, clnt->dns_name);
|
||||
nlist_free(&rtnl, clnt);
|
||||
++count;
|
||||
clnt = temp;
|
||||
diff --git a/utils/statd/statd.h b/utils/statd/statd.h
|
||||
index 5a6e289..88ba208 100644
|
||||
--- a/utils/statd/statd.h
|
||||
+++ b/utils/statd/statd.h
|
||||
@@ -53,7 +53,7 @@ extern int process_notify_list(void);
|
||||
extern int process_reply(FD_SET_TYPE *);
|
||||
extern char * xstrdup(const char *);
|
||||
extern void * xmalloc(size_t);
|
||||
-extern void xunlink (char *, char *, short int);
|
||||
+extern void xunlink (char *, char *);
|
||||
extern void load_state(void);
|
||||
|
||||
/*
|
@ -37,6 +37,7 @@ Patch107: nfs-utils-1.1.4-mount-inet6-support.patch
|
||||
Patch108: nfs-utils-1.1.4-svcgssd-expiration.patch
|
||||
Patch109: nfs-utils-1.1.4-mount-po_get_numeric.patch
|
||||
Patch110: nfs-utils-1.1.4-sm-notify-freeaddrinfo.patch
|
||||
Patch111: nfs-utils-1.1.4-statd-xunlink.patch
|
||||
|
||||
%if %{enablefscache}
|
||||
Patch90: nfs-utils-1.1.0-mount-fsc.patch
|
||||
@ -102,6 +103,7 @@ This package also contains the mount.nfs and umount.nfs program.
|
||||
%patch108 -p1
|
||||
%patch109 -p1
|
||||
%patch110 -p1
|
||||
%patch111 -p1
|
||||
|
||||
%if %{enablefscache}
|
||||
%patch90 -p1
|
||||
@ -269,6 +271,7 @@ fi
|
||||
- text-based mount command: add function to parse numeric mount options
|
||||
- text-based mount command: use po_get_numeric() for handling retry
|
||||
- sm-notify command: fix a use-after-free bug
|
||||
- statd: not unlinking host files
|
||||
|
||||
* Thu Dec 11 2008 Steve Dickson <steved@redhat.com> 1.1.4-8
|
||||
- mount command: AF_INET6 support for probe_bothports()
|
||||
|
Loading…
Reference in New Issue
Block a user