rpms/blcr-kmod/devel put_fs_struct.patch01, NONE, 1.1 blcr-kmod.spec, 1.15, 1.16

Neal Becker nbecker at rpmfusion.org
Mon Jun 8 23:16:47 CEST 2009


Author: nbecker

Update of /cvs/free/rpms/blcr-kmod/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv28192

Modified Files:
	blcr-kmod.spec 
Added Files:
	put_fs_struct.patch01 
Log Message:
Try again at put_fs_struct patch



--- NEW FILE put_fs_struct.patch01 ---
This file is a patch against BLCR-0.8.1 to resolve the following error,
reported by Neal Becker, that is seen with the 2.6.29.x kernels used in fc11:

  CC [M]  
/builddir/build/BUILD/blcr-0.8.1/_kmod_build_2.6.29.3-140.fc11.i686.PAE/cr_module/kbuild/cr_dest_file.o
/builddir/build/BUILD/blcr-0.8.1/_kmod_build_2.6.29.3-140.fc11.i686.PAE/cr_module/kbuild/cr_dest_file.c: 
In function 'cr_loc_free':
/builddir/build/BUILD/blcr-0.8.1/_kmod_build_2.6.29.3-140.fc11.i686.PAE/cr_module/kbuild/cr_dest_file.c:189: 
error: implicit declaration of function 'put_fs_struct'

Note that this patch modifies configure and blcr_config.h.in directly.  If patch should fail to cleanly
apply only those hunks, then running "autoreconf" should have the same effect.

It is my intention that if a 0.8.2 release of BLCR is made, this fix will
be included.  However, it is possible that this may not appear in an
official BLCR release until 0.9.0 in the Fall.

- Paul H. Hargrove

Signed-off-by: Paul H. Hargrove <PHHargrove at lbl.gov>


diff -ur blcr-0.8.1.orig/acinclude.m4 blcr-0.8.1/acinclude.m4
--- blcr-0.8.1.orig/acinclude.m4	2009-02-13 17:48:55.000000000 -0800
+++ blcr-0.8.1/acinclude.m4	2009-06-08 11:41:24.000000000 -0700
@@ -1116,7 +1116,7 @@
 # If not found, leave CR_K${TYPE}_${symbol} undefined
 # If found to be exported, "#define CR_K${TYPE}_${symbol} 0"
 # If found not to be exported, "#define CR_K${TYPE}_${symbol} 0x<value>"
-# On return, cr_addr is set (or undefined) the same way.
+# On return, cr_addr is set (or empty) the same way.
 AC_DEFUN([CR_FIND_KSYM],[
   AC_REQUIRE([CR_LINUX_SYMTAB])
   AC_MSG_CHECKING([[kernel symbol table for $1]])
@@ -1135,6 +1135,7 @@
       ],[int x = sizeof(&$1);],[cr_cvname="Y$cr_cvname"],[cr_cvname="N$cr_cvname"])
     fi
   ])
+  cr_addr=''
   if test -z "$cr_cvname"; then
     cr_result='not found'
   else
diff -ur blcr-0.8.1.orig/configure.ac blcr-0.8.1/configure.ac
--- blcr-0.8.1.orig/configure.ac	2009-03-25 14:44:17.000000000 -0700
+++ blcr-0.8.1/configure.ac	2009-06-08 11:41:24.000000000 -0700
@@ -1472,9 +1472,17 @@
 CR_FIND_KSYM([sys_prctl],[CODE],
 	[extern asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);])
 
+CR_FIND_KSYM([copy_fs_struct],[CODE])
+CR_FIND_KSYM([put_fs_struct],[CODE])
+if test -z "$cr_addr"; then
+  CR_FIND_KSYM([free_fs_struct],[CODE])
+  if test -z "$cr_addr"; then
+    AC_MSG_ERROR([failed to find either symbol put_fs_struct or free_fs_struct])
+  fi
+fi
+
 # For blcr
 CR_FIND_KSYM([set_fs_pwd],[CODE])
-CR_FIND_KSYM([put_fs_struct],[CODE])
 # For vmadump4
 CR_FIND_KSYM([sys_mremap],[CODE],
 	[extern asmlinkage unsigned long sys_mremap(unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr);])
diff -ur blcr-0.8.1.orig/cr_module/cr_dest_file.c blcr-0.8.1/cr_module/cr_dest_file.c
--- blcr-0.8.1.orig/cr_module/cr_dest_file.c	2008-11-23 12:29:14.000000000 -0800
+++ blcr-0.8.1/cr_module/cr_dest_file.c	2009-06-08 11:41:24.000000000 -0700
@@ -186,7 +186,7 @@
 
 	// For directory:
 	if (loc->fs) {
-		put_fs_struct(loc->fs);
+		cr_free_fs_struct(loc->fs);
 	}
 }
 
diff -ur blcr-0.8.1.orig/cr_module/cr_kcompat.h blcr-0.8.1/cr_module/cr_kcompat.h
--- blcr-0.8.1.orig/cr_module/cr_kcompat.h	2009-02-06 16:15:57.000000000 -0800
+++ blcr-0.8.1/cr_module/cr_kcompat.h	2009-06-08 11:41:24.000000000 -0700
@@ -556,4 +556,15 @@
   #define cr_task_cred(_t)	(_t)
 #endif
 
+#if defined(CR_KCODE_put_fs_struct)
+  static __inline__ void cr_free_fs_struct(struct fs_struct *fs) {
+    CRI_ASSERT(atomic_read(&fs->count) == 1);
+    put_fs_struct(fs);
+  }
+#elif defined(CR_KCODE_free_fs_struct)
+  #define cr_free_fs_struct free_fs_struct
+#else
+ #error "no cr_free_fs_struct() definition"
+#endif
+
 #endif /* _CR_KCOMPAT_H */
diff -ur blcr-0.8.1.orig/configure blcr-0.8.1/configure
--- blcr-0.8.1.orig/configure	2009-03-25 21:23:59.000000000 -0700
+++ blcr-0.8.1/configure	2009-06-08 11:43:54.000000000 -0700
@@ -28435,6 +28435,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_timeval_to_jiffies"; then
     cr_result='not found'
   else
@@ -28548,6 +28549,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_jiffies_to_timeval"; then
     cr_result='not found'
   else
@@ -31168,6 +31170,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab___put_task_struct"; then
     cr_result='not found'
   else
@@ -31281,6 +31284,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab___put_task_struct_cb"; then
     cr_result='not found'
   else
@@ -32119,6 +32123,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab___kuser_helper_start"; then
     cr_result='not found'
   else
@@ -32233,6 +32238,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab___kuser_cmpxchg"; then
     cr_result='not found'
   else
@@ -32678,6 +32684,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_arch_setup_additional_pages"; then
     cr_result='not found'
   else
@@ -32906,6 +32913,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_map_vsyscall"; then
     cr_result='not found'
   else
@@ -33021,6 +33029,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_syscall32_setup_pages"; then
     cr_result='not found'
   else
@@ -33137,6 +33146,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_arch_pick_mmap_layout"; then
     cr_result='not found'
   else
@@ -33250,6 +33260,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_arch_get_unmaped_area"; then
     cr_result='not found'
   else
@@ -33363,6 +33374,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_arch_unmap_area"; then
     cr_result='not found'
   else
@@ -33787,6 +33799,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_hugetlbfs_file_operations"; then
     cr_result='not found'
   else
@@ -33901,6 +33914,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_is_file_shm_hugepages"; then
     cr_result='not found'
   else
@@ -34015,6 +34029,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_hugepage_vma"; then
     cr_result='not found'
   else
@@ -34129,6 +34144,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_pmd_huge"; then
     cr_result='not found'
   else
@@ -34243,6 +34259,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_follow_huge_pmd"; then
     cr_result='not found'
   else
@@ -34357,6 +34374,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_follow_huge_addr"; then
     cr_result='not found'
   else
@@ -34770,6 +34788,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_mem_map_zero"; then
     cr_result='not found'
   else
@@ -34886,6 +34905,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_empty_zero_page"; then
     cr_result='not found'
   else
@@ -35298,6 +35318,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_copy_siginfo_to_user"; then
     cr_result='not found'
   else
@@ -35412,6 +35433,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_group_send_sig_info"; then
     cr_result='not found'
   else
@@ -35528,6 +35550,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_do_sigaltstack"; then
     cr_result='not found'
   else
@@ -35855,6 +35878,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_cpu_gdt_descr"; then
     cr_result='not found'
   else
@@ -35969,6 +35993,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_cpu_gdt_table"; then
     cr_result='not found'
   else
@@ -36082,6 +36107,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_per_cpu__cpu_gdt_descr"; then
     cr_result='not found'
   else
@@ -37320,6 +37346,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_init_fpu"; then
     cr_result='not found'
   else
@@ -37434,6 +37461,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_xstate_size"; then
     cr_result='not found'
   else
@@ -38937,6 +38965,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_get_dumpable"; then
     cr_result='not found'
   else
@@ -39710,6 +39739,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_suid_dumpable"; then
     cr_result='not found'
   else
@@ -39933,6 +39963,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_set_dumpable"; then
     cr_result='not found'
   else
@@ -40047,6 +40078,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_groups_search"; then
     cr_result='not found'
   else
@@ -40161,6 +40193,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_supplemental_group_member"; then
     cr_result='not found'
   else
@@ -40554,6 +40587,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_detach_pid"; then
     cr_result='not found'
   else
@@ -40667,6 +40701,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_attach_pid"; then
     cr_result='not found'
   else
@@ -40780,6 +40815,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_change_pid"; then
     cr_result='not found'
   else
@@ -40893,6 +40929,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_find_pid"; then
     cr_result='not found'
   else
@@ -41006,6 +41043,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_link_pid"; then
     cr_result='not found'
   else
@@ -42494,6 +42532,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_free_pid"; then
     cr_result='not found'
   else
@@ -42607,6 +42646,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_pid_hash"; then
     cr_result='not found'
   else
@@ -42721,6 +42761,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_pidhash_shift"; then
     cr_result='not found'
   else
@@ -42941,6 +42982,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_pid_cachep"; then
     cr_result='not found'
   else
@@ -43133,6 +43175,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_init_pspace"; then
     cr_result='not found'
   else
@@ -43247,6 +43290,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_init_pid_ns"; then
     cr_result='not found'
   else
@@ -43969,6 +44013,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_pidmap_array"; then
     cr_result='not found'
   else
@@ -44092,6 +44137,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_pidmap_lock"; then
     cr_result='not found'
   else
@@ -44719,6 +44765,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_child_reaper"; then
     cr_result='not found'
   else
@@ -46099,6 +46146,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_anon_pipe_buf_ops"; then
     cr_result='not found'
   else
@@ -48380,6 +48428,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_ptrace_utrace_ops"; then
     cr_result='not found'
   else
@@ -48711,6 +48760,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_tasklist_lock"; then
     cr_result='not found'
   else
@@ -48824,6 +48874,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_shmem_file_operations"; then
     cr_result='not found'
   else
@@ -48938,6 +48989,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_ramfs_file_operations"; then
     cr_result='not found'
   else
@@ -49052,6 +49104,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_HPAGE_SHIFT"; then
     cr_result='not found'
   else
@@ -49166,6 +49219,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_phys_base"; then
     cr_result='not found'
   else
@@ -49282,6 +49336,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_do_pipe"; then
     cr_result='not found'
   else
@@ -49395,6 +49450,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_munmap"; then
     cr_result='not found'
   else
@@ -49509,6 +49565,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_dup2"; then
     cr_result='not found'
   else
@@ -49623,6 +49680,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_lseek"; then
     cr_result='not found'
   else
@@ -49737,6 +49795,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_ftruncate"; then
     cr_result='not found'
   else
@@ -49851,6 +49910,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_mprotect"; then
     cr_result='not found'
   else
@@ -49965,6 +50025,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_setitimer"; then
     cr_result='not found'
   else
@@ -50079,6 +50140,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_prctl"; then
     cr_result='not found'
   else
@@ -50106,21 +50168,20 @@
 echo "${ECHO_T}$cr_result" >&6
 
 
-# For blcr
 
 
-  echo "$as_me:$LINENO: checking kernel symbol table for set_fs_pwd" >&5
-echo $ECHO_N "checking kernel symbol table for set_fs_pwd... $ECHO_C" >&6
+  echo "$as_me:$LINENO: checking kernel symbol table for copy_fs_struct" >&5
+echo $ECHO_N "checking kernel symbol table for copy_fs_struct... $ECHO_C" >&6
   # Our cacheval is encoded with 'Y' or 'N' as the first char to indicate
   # if a declaration was found or not, and the address or 0 as the rest.
-    if test "${cr_cv_ksymtab_set_fs_pwd+set}" = set; then
+    if test "${cr_cv_ksymtab_copy_fs_struct+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-    cr_cv_ksymtab_set_fs_pwd=`eval $LINUX_SYMTAB_CMD | sed -n -e "/${CR_KSYM_PATTERN_CODE}set_fs_pwd$/ {s/ .*//p;q;}"`
-    if test -n "$cr_cv_ksymtab_set_fs_pwd"; then
-      if eval $LINUX_SYMTAB_CMD | grep " __ksymtab_set_fs_pwd\$" >/dev/null ; then
-        cr_cv_ksymtab_set_fs_pwd=0
+    cr_cv_ksymtab_copy_fs_struct=`eval $LINUX_SYMTAB_CMD | sed -n -e "/${CR_KSYM_PATTERN_CODE}copy_fs_struct$/ {s/ .*//p;q;}"`
+    if test -n "$cr_cv_ksymtab_copy_fs_struct"; then
+      if eval $LINUX_SYMTAB_CMD | grep " __ksymtab_copy_fs_struct\$" >/dev/null ; then
+        cr_cv_ksymtab_copy_fs_struct=0
       fi
 
 
@@ -50149,7 +50210,7 @@
 int
 main ()
 {
-int x = sizeof(&set_fs_pwd);
+int x = sizeof(&copy_fs_struct);
   ;
   return 0;
 }
@@ -50179,7 +50240,7 @@
   CC=$SAVE_CC
 	 CFLAGS=$SAVE_CFLAGS
 	 CPPFLAGS=$SAVE_CPPFLAGS
-	 cr_cv_ksymtab_set_fs_pwd="Y$cr_cv_ksymtab_set_fs_pwd"
+	 cr_cv_ksymtab_copy_fs_struct="Y$cr_cv_ksymtab_copy_fs_struct"
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -50187,7 +50248,7 @@
 CC=$SAVE_CC
 	 CFLAGS=$SAVE_CFLAGS
 	 CPPFLAGS=$SAVE_CPPFLAGS
-	 cr_cv_ksymtab_set_fs_pwd="N$cr_cv_ksymtab_set_fs_pwd"
+	 cr_cv_ksymtab_copy_fs_struct="N$cr_cv_ksymtab_copy_fs_struct"
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 
@@ -50195,25 +50256,26 @@
 
 fi
 
-  if test -z "$cr_cv_ksymtab_set_fs_pwd"; then
+  cr_addr=''
+  if test -z "$cr_cv_ksymtab_copy_fs_struct"; then
     cr_result='not found'
   else
-    if expr "$cr_cv_ksymtab_set_fs_pwd" : N >/dev/null; then
-      { { echo "$as_me:$LINENO: error: Found symbol set_fs_pwd but no declaration -- please file a bug report." >&5
-echo "$as_me: error: Found symbol set_fs_pwd but no declaration -- please file a bug report." >&2;}
+    if expr "$cr_cv_ksymtab_copy_fs_struct" : N >/dev/null; then
+      { { echo "$as_me:$LINENO: error: Found symbol copy_fs_struct but no declaration -- please file a bug report." >&5
+echo "$as_me: error: Found symbol copy_fs_struct but no declaration -- please file a bug report." >&2;}
    { (exit 1); exit 1; }; }
     fi
-    cr_result=`echo $cr_cv_ksymtab_set_fs_pwd | tr -d 'YN'`
+    cr_result=`echo $cr_cv_ksymtab_copy_fs_struct | tr -d 'YN'`
     if test $cr_result = 0; then
       cr_result=exported
       cr_addr=0
     else
       cr_addr="0x$cr_result"
-      echo "_CR_IMPORT_KCODE(set_fs_pwd, $cr_addr)" >>$CR_KSYM_IMPORT_CALLS
+      echo "_CR_IMPORT_KCODE(copy_fs_struct, $cr_addr)" >>$CR_KSYM_IMPORT_CALLS
     fi
 
 cat >>confdefs.h <<_ACEOF
-#define CR_KCODE_set_fs_pwd $cr_addr
+#define CR_KCODE_copy_fs_struct $cr_addr
 _ACEOF
 
   fi
@@ -50308,6 +50370,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_put_fs_struct"; then
     cr_result='not found'
   else
@@ -50333,6 +50396,243 @@
     echo "$as_me:$LINENO: result: $cr_result" >&5
 echo "${ECHO_T}$cr_result" >&6
 
+if test -z "$cr_addr"; then
+
+
+  echo "$as_me:$LINENO: checking kernel symbol table for free_fs_struct" >&5
+echo $ECHO_N "checking kernel symbol table for free_fs_struct... $ECHO_C" >&6
+  # Our cacheval is encoded with 'Y' or 'N' as the first char to indicate
+  # if a declaration was found or not, and the address or 0 as the rest.
+    if test "${cr_cv_ksymtab_free_fs_struct+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+    cr_cv_ksymtab_free_fs_struct=`eval $LINUX_SYMTAB_CMD | sed -n -e "/${CR_KSYM_PATTERN_CODE}free_fs_struct$/ {s/ .*//p;q;}"`
+    if test -n "$cr_cv_ksymtab_free_fs_struct"; then
+      if eval $LINUX_SYMTAB_CMD | grep " __ksymtab_free_fs_struct\$" >/dev/null ; then
+        cr_cv_ksymtab_free_fs_struct=0
+      fi
+
+
+  SAVE_CC=$CC
+  SAVE_CFLAGS=$CFLAGS
+  SAVE_CPPFLAGS=$CPPFLAGS
+  CC=$KCC
+  CFLAGS=""
+  CPPFLAGS="$KCFLAGS"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+		 #include <linux/kernel.h>
+		 #ifndef FASTCALL
+		   #define FASTCALL(_decl) _decl
+		 #endif
+		 #include <linux/types.h>
+
+		#define IN_CONFIGURE 1
+		#include "${TOP_SRCDIR}/include/blcr_imports.h.in"
+
+int
+main ()
+{
+int x = sizeof(&free_fs_struct);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  CC=$SAVE_CC
+	 CFLAGS=$SAVE_CFLAGS
+	 CPPFLAGS=$SAVE_CPPFLAGS
+	 cr_cv_ksymtab_free_fs_struct="Y$cr_cv_ksymtab_free_fs_struct"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+CC=$SAVE_CC
+	 CFLAGS=$SAVE_CFLAGS
+	 CPPFLAGS=$SAVE_CPPFLAGS
+	 cr_cv_ksymtab_free_fs_struct="N$cr_cv_ksymtab_free_fs_struct"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    fi
+
+fi
+
+  cr_addr=''
+  if test -z "$cr_cv_ksymtab_free_fs_struct"; then
+    cr_result='not found'
+  else
+    if expr "$cr_cv_ksymtab_free_fs_struct" : N >/dev/null; then
+      { { echo "$as_me:$LINENO: error: Found symbol free_fs_struct but no declaration -- please file a bug report." >&5
+echo "$as_me: error: Found symbol free_fs_struct but no declaration -- please file a bug report." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+    cr_result=`echo $cr_cv_ksymtab_free_fs_struct | tr -d 'YN'`
+    if test $cr_result = 0; then
+      cr_result=exported
+      cr_addr=0
+    else
+      cr_addr="0x$cr_result"
+      echo "_CR_IMPORT_KCODE(free_fs_struct, $cr_addr)" >>$CR_KSYM_IMPORT_CALLS
+    fi
+
+cat >>confdefs.h <<_ACEOF
+#define CR_KCODE_free_fs_struct $cr_addr
+_ACEOF
+
+  fi
+    echo "$as_me:$LINENO: result: $cr_result" >&5
+echo "${ECHO_T}$cr_result" >&6
+
+  if test -z "$cr_addr"; then
+    { { echo "$as_me:$LINENO: error: failed to find either symbol put_fs_struct or free_fs_struct" >&5
+echo "$as_me: error: failed to find either symbol put_fs_struct or free_fs_struct" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+# For blcr
+
+
+  echo "$as_me:$LINENO: checking kernel symbol table for set_fs_pwd" >&5
+echo $ECHO_N "checking kernel symbol table for set_fs_pwd... $ECHO_C" >&6
+  # Our cacheval is encoded with 'Y' or 'N' as the first char to indicate
+  # if a declaration was found or not, and the address or 0 as the rest.
+    if test "${cr_cv_ksymtab_set_fs_pwd+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+    cr_cv_ksymtab_set_fs_pwd=`eval $LINUX_SYMTAB_CMD | sed -n -e "/${CR_KSYM_PATTERN_CODE}set_fs_pwd$/ {s/ .*//p;q;}"`
+    if test -n "$cr_cv_ksymtab_set_fs_pwd"; then
+      if eval $LINUX_SYMTAB_CMD | grep " __ksymtab_set_fs_pwd\$" >/dev/null ; then
+        cr_cv_ksymtab_set_fs_pwd=0
+      fi
+
+
+  SAVE_CC=$CC
+  SAVE_CFLAGS=$CFLAGS
+  SAVE_CPPFLAGS=$CPPFLAGS
+  CC=$KCC
+  CFLAGS=""
+  CPPFLAGS="$KCFLAGS"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+		 #include <linux/kernel.h>
+		 #ifndef FASTCALL
+		   #define FASTCALL(_decl) _decl
+		 #endif
+		 #include <linux/types.h>
+
+		#define IN_CONFIGURE 1
+		#include "${TOP_SRCDIR}/include/blcr_imports.h.in"
+
+int
+main ()
+{
+int x = sizeof(&set_fs_pwd);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  CC=$SAVE_CC
+	 CFLAGS=$SAVE_CFLAGS
+	 CPPFLAGS=$SAVE_CPPFLAGS
+	 cr_cv_ksymtab_set_fs_pwd="Y$cr_cv_ksymtab_set_fs_pwd"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+CC=$SAVE_CC
+	 CFLAGS=$SAVE_CFLAGS
+	 CPPFLAGS=$SAVE_CPPFLAGS
+	 cr_cv_ksymtab_set_fs_pwd="N$cr_cv_ksymtab_set_fs_pwd"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    fi
+
+fi
+
+  cr_addr=''
+  if test -z "$cr_cv_ksymtab_set_fs_pwd"; then
+    cr_result='not found'
+  else
+    if expr "$cr_cv_ksymtab_set_fs_pwd" : N >/dev/null; then
+      { { echo "$as_me:$LINENO: error: Found symbol set_fs_pwd but no declaration -- please file a bug report." >&5
+echo "$as_me: error: Found symbol set_fs_pwd but no declaration -- please file a bug report." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+    cr_result=`echo $cr_cv_ksymtab_set_fs_pwd | tr -d 'YN'`
+    if test $cr_result = 0; then
+      cr_result=exported
+      cr_addr=0
+    else
+      cr_addr="0x$cr_result"
+      echo "_CR_IMPORT_KCODE(set_fs_pwd, $cr_addr)" >>$CR_KSYM_IMPORT_CALLS
+    fi
+
+cat >>confdefs.h <<_ACEOF
+#define CR_KCODE_set_fs_pwd $cr_addr
+_ACEOF
+
+  fi
+    echo "$as_me:$LINENO: result: $cr_result" >&5
+echo "${ECHO_T}$cr_result" >&6
+
 # For vmadump4
 
 
@@ -50422,6 +50722,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_mremap"; then
     cr_result='not found'
   else
@@ -50536,6 +50837,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_do_sigaction"; then
     cr_result='not found'
   else
@@ -50650,6 +50952,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_load_gs_index"; then
     cr_result='not found'
   else
@@ -50765,6 +51068,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_setgroups"; then
     cr_result='not found'
   else
@@ -50879,6 +51183,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_setresuid"; then
     cr_result='not found'
   else
@@ -50993,6 +51298,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_setresgid"; then
     cr_result='not found'
   else
@@ -51108,6 +51414,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_expand_files"; then
     cr_result='not found'
   else
@@ -51222,6 +51529,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab___flush_icache_range"; then
     cr_result='not found'
   else
@@ -51335,6 +51643,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_sys_link"; then
     cr_result='not found'
   else
@@ -51449,6 +51758,7 @@
 
 fi
 
+  cr_addr=''
   if test -z "$cr_cv_ksymtab_lookup_create"; then
     cr_result='not found'
   else
diff -ur blcr-0.8.1.orig/blcr_config.h.in blcr-0.8.1/blcr_config.h.in
--- blcr-0.8.1.orig/blcr_config.h.in	2009-03-25 21:23:58.000000000 -0700
+++ blcr-0.8.1/blcr_config.h.in	2009-06-08 11:41:44.000000000 -0700
@@ -107,6 +107,10 @@
    exported */
 #undef CR_KCODE_change_pid
 
+/* Define to address of non-exported kernel symbol copy_fs_struct, or 0 if
+   exported */
+#undef CR_KCODE_copy_fs_struct
+
 /* Define to address of non-exported kernel symbol copy_siginfo_to_user, or 0
    if exported */
 #undef CR_KCODE_copy_siginfo_to_user
@@ -143,6 +147,10 @@
    exported */
 #undef CR_KCODE_follow_huge_pmd
 
+/* Define to address of non-exported kernel symbol free_fs_struct, or 0 if
+   exported */
+#undef CR_KCODE_free_fs_struct
+
 /* Define to address of non-exported kernel symbol free_pid, or 0 if exported
    */
 #undef CR_KCODE_free_pid


Index: blcr-kmod.spec
===================================================================
RCS file: /cvs/free/rpms/blcr-kmod/devel/blcr-kmod.spec,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- blcr-kmod.spec	7 Jun 2009 13:29:01 -0000	1.15
+++ blcr-kmod.spec	8 Jun 2009 21:16:47 -0000	1.16
@@ -7,7 +7,7 @@
 
 Name:           blcr-kmod
 Version:        0.8.1
-Release:        2%{?dist}.7
+Release:        3%{?dist}.7
 Summary:        Kernel module (kmod) for Berkeley Lab Checkpoint/Restart for Linux
 
 %define distname blcr-%{version}
@@ -17,7 +17,7 @@
 URL:            http://www.blcr.org/
 Source0:        http://ftg.lbl.gov/CheckpointRestart/downloads/%{distname}.tar.gz
 # Patch to build on 2.6.29.x
-Patch0:		put_fs_struct.patch00
+Patch0:		put_fs_struct.patch01
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 #Generic i386 is NOT supported



More information about the rpmfusion-commits mailing list