lkml.org 
[lkml]   [1998]   [Jun]   [26]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: pre-patch-2.1.107 breaks kmod
From"James H. Cloos Jr." <>
Date26 Jun 1998 06:54:28 -0500
Linus> The problem is that if you have two threads that want to load
Linus> the same module with kmod, _both_ of them have to succeed, and
Linus> _both_ of them have to wait not until after create_module(),
Linus> but until after init_module() has successfully returned.

So, would the attatched patch to insmod.c, based on the suggestion
(was it Alan's?) to lock the module file solve the problem?

-JimC
-- 
James H. Cloos, Jr.
<cloos@jhcloos.com>
diff -u --recursive --new-file modutils-2.1.85/insmod/insmod.c modutils/insmod/insmod.c
--- modutils-2.1.85/insmod/insmod.c     Fri Feb  6 03:26:33 1998
+++ modutils/insmod/insmod.c    Fri Jun 26 06:47:09 1998
@@ -34,6 +34,7 @@
 #include <getopt.h>
 #include <sys/utsname.h>
 #include <sys/stat.h>
+#include <sys/file.h>
 
 #include "module.h"
 #include "obj.h"
@@ -1467,9 +1468,13 @@
       error("%s: %m", filename);
       return 1;
     }
+  else if (flock(fileno(fp), LOCK_EX))
+    {
+      error("%s: %m", filename);
+      return 1;
+    }
   else if ((f = obj_load(fp)) == NULL)
     return 1;
-  fclose(fp);
 
   /* Version correspondence?  */
 
@@ -1620,5 +1625,6 @@
   if (flag_load_map)
     print_load_map(f);
 
+  fclose(fp);
   return 0;
 }

\
 
 \ /
  Last update: 2005-03-22 12:43    [from the cache]
©2003-2008