Index: trunk/configure.ac
===================================================================
--- trunk/configure.ac	(revision 89)
+++ trunk/configure.ac	(revision 90)
@@ -13,5 +13,5 @@
 dnl start
 dnl
-AM_INIT_AUTOMAKE(samhain, 2.3.2)
+AM_INIT_AUTOMAKE(samhain, 2.3.3)
 AC_CANONICAL_HOST
 
@@ -1744,12 +1744,25 @@
 	   # -- NEW --
 	   kernel_version=`uname -r | sed s,2.6.*,LINUX26,`
+	   kernel_numeric=`uname -r | sed 's%-%.%' | sed 's%_%.%' | awk -F. '{ print $1*100000+$2*1000+$3 }'`
+	   AC_DEFINE_UNQUOTED(SH_KERNEL_NUMERIC, ${kernel_numeric}, [Kernel number])
+
 	   if test x"$kernel_version" = xLINUX26
 	   then
+
 		sh_modlist_lock=`egrep ['[bd] modlist_lock$'] ${khidemap} | awk '{print $1}'` 
 		if test x"$sh_modlist_lock" = x; then
-			AC_MSG_ERROR([--enable-khide: symbol modlist_lock not found in ${khidemap}])
+			echo "--enable-khide: symbol modlist_lock not found in ${khidemap}"
+		else
+			sh_modlist_lock="0x${sh_modlist_lock}"
+			AC_DEFINE_UNQUOTED(SH_MODLIST_LOCK, ${sh_modlist_lock}, [The address of the modules list spinlock])
 		fi
-		sh_modlist_lock="0x${sh_modlist_lock}"
-		AC_DEFINE_UNQUOTED(SH_MODLIST_LOCK, ${sh_modlist_lock}, [The address of the modules list spinlock])
+				    
+		sh_modlist_mutex=`egrep ['[bd] module_mutex$'] ${khidemap} | awk '{print $1}'` 
+		if test x"$sh_modlist_mutex" = x; then
+			echo "--enable-khide: symbol module_mutex not found in ${khidemap}"
+		else
+			sh_modlist_mutex="0x${sh_modlist_mutex}"
+			AC_DEFINE_UNQUOTED(SH_MODLIST_MUTEX, ${sh_modlist_mutex}, [The address of the modules list mutex])
+		fi
 
 		sh_list_modules=`egrep 'd modules$' ${khidemap} | awk '{print $1}'` 
Index: trunk/src/samhain_hide.c
===================================================================
--- trunk/src/samhain_hide.c	(revision 89)
+++ trunk/src/samhain_hide.c	(revision 90)
@@ -119,5 +119,9 @@
 /* The configure options (#defines) for the Kernel
  */
+#if SH_KERNEL_NUMERIC >= 206019
+#include <linux/autoconf.h>
+#else
 #include <linux/config.h>
+#endif
 
 #ifndef LINUX26
@@ -164,4 +168,8 @@
  */
 #include <linux/smp_lock.h>
+
+#if SH_KERNEL_NUMERIC >= 206019
+#include <linux/mutex.h>
+#endif
 
 /* Include for fget().
@@ -341,4 +349,6 @@
   long                 dirp_offset;
 
+  unsigned long        dummy;
+
   lock_kernel();
 
@@ -400,5 +410,5 @@
   /* Copy the dirp table to kernel space.
    */
-  copy_from_user(dirp_new, dirp, status);
+  dummy = (unsigned long) copy_from_user(dirp_new, dirp, status);
 
 #ifdef FILE_DEBUG
@@ -498,5 +508,5 @@
   /* Copy our modified dirp table back to user space.
    */
-  copy_to_user(dirp, dirp_new, status);
+  dummy = (unsigned long) copy_to_user(dirp, dirp_new, status);
 #ifdef FILE_DEBUG
   printk("COPY to user\n");
@@ -534,4 +544,6 @@
   __s64                dirp_offset;
 
+  unsigned long        dummy;
+
   lock_kernel();
 
@@ -612,5 +624,5 @@
   /* Copy the dirp table to kernel space.
    */
-  copy_from_user(dirp_new, dirp, status);
+  dummy = (unsigned long) copy_from_user(dirp_new, dirp, status);
 
 #ifdef FILE_DEBUG
@@ -716,5 +728,5 @@
   /* Copy our modified dirp table back to user space.
    */
-  copy_to_user(dirp, dirp_new, status);
+  dummy = (unsigned long) copy_to_user(dirp, dirp_new, status);
   kfree (dirp_new);
   unlock_kernel();
@@ -768,15 +780,34 @@
 #ifdef LINUX26
   {
+#if defined(SH_MODLIST_LOCK)
     spinlock_t * modlist_lock = (spinlock_t * ) SH_MODLIST_LOCK;
-    struct module *mod = find_module(SH_INSTALL_NAME"_hide");
+#endif
+#if SH_KERNEL_NUMERIC >= 206019
+    struct mutex * module_mutex = (struct mutex *) SH_MODLIST_MUTEX;
+#endif
+
+    struct module *mod;
+
+#if SH_KERNEL_NUMERIC >= 206019
+    mutex_lock(module_mutex);
+#endif
+
+    mod = find_module(SH_INSTALL_NAME"_hide");
     if (mod) {
       /* Delete from various lists */
+#if defined(SH_MODLIST_LOCK)
       spin_lock_irq(modlist_lock);
+#endif
       if (removeme == 1)
 	{
 	  list_del(&mod->list);
 	}
+#if defined(SH_MODLIST_LOCK)
       spin_unlock_irq(modlist_lock);
+#endif
     }
+#if SH_KERNEL_NUMERIC >= 206019
+      mutex_unlock(module_mutex);
+#endif
   }
 #endif
