libafs: reset global icl set pointers on shutdown
authorMichael Meffie <mmeffie@sinenomine.net>
Tue, 11 Mar 2014 16:40:33 +0000 (12:40 -0400)
committerD Brashear <shadow@your-file-system.com>
Thu, 20 Mar 2014 19:29:11 +0000 (12:29 -0700)
Avoid panicking when an icl tracing function is called after
shutdown_icl.

There is a window during shutdown in which pioctls can be requested
after the shutdown_icl is issued. Reset the global icl set pointers
so tracing is disabled after the shutdown_icl, instead of using
pointers to freed memory.

Removed the unneeded afs_icl_FindSet calls and use the global
pointers which were set during the initialization.

Change-Id: I3310868a28850236a2870b8dab858ecb7a815c11
Reviewed-on: http://gerrit.openafs.org/10884
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: D Brashear <shadow@your-file-system.com>

src/afs/afs_icl.c

index dd16907..558d42a 100644 (file)
@@ -55,16 +55,14 @@ shutdown_icl(void)
     struct afs_icl_log *logp;
     struct afs_icl_set *setp;
 
-    setp = afs_icl_FindSet("cm");
-    if (setp) {
-       /* Release the reference from Find, and the initial one */
-       afs_icl_SetFree(setp);
+    if (afs_iclSetp) {
+       setp = afs_iclSetp;  /* "cm" */
+       afs_iclSetp = NULL;
        afs_icl_SetFree(setp);
     }
-    setp = afs_icl_FindSet("cmlongterm");
-    if (setp) {
-       /* Release the reference from Find, and the initial one */
-       afs_icl_SetFree(setp);
+    if (afs_iclLongTermSetp) {
+       setp = afs_iclLongTermSetp; /* "cmlongterm" */
+       afs_iclLongTermSetp = NULL;
        afs_icl_SetFree(setp);
     }
     logp = afs_icl_FindLog("cmfx");