diff -ruN nvidia-96.43.10.orig/conftest.sh nvidia-96.43.10.new/conftest.sh --- nvidia-96.43.10.orig/conftest.sh 2009-08-20 15:39:20.000000000 +0100 +++ nvidia-96.43.10.new/conftest.sh 2009-08-20 16:36:44.000000000 +0100 @@ -928,6 +928,29 @@ return fi ;; + proc_dir_entry) + # + # Determine if the 'proc_dir_entry' structure has + # an 'owner' member. + # + echo "$CONFTEST_PREAMBLE + #include + int conftest_proc_dir_entry(void) { + return offsetof(struct proc_dir_entry, owner); + }" > conftest$$.c + + $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 + rm -f conftest$$.c + + if [ -f conftest$$.o ]; then + echo "#define NV_PROC_DIR_ENTRY_HAS_OWNER" >> conftest.h + rm -f conftest$$.o + return + else + echo "#undef NV_PROC_DIR_ENTRY_HAS_OWNER" >> conftest.h + return + fi + ;; esac } diff -ruN nvidia-96.43.10.orig/nv.c nvidia-96.43.10.new/nv.c --- nvidia-96.43.10.orig/nv.c 2009-08-20 15:39:20.000000000 +0100 +++ nvidia-96.43.10.new/nv.c 2009-08-20 16:56:54.000000000 +0100 @@ -499,9 +499,11 @@ * Set the module owner to ensure that the reference * count reflects accesses to the proc files. */ +#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) proc_nvidia->owner = THIS_MODULE; proc_nvidia_cards->owner = THIS_MODULE; proc_nvidia_warnings->owner = THIS_MODULE; +#endif for (j = 0; j < num_nv_devices; j++) { @@ -521,7 +523,9 @@ entry->data = nv; entry->read_proc = nv_kern_read_cardinfo; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) entry->owner = THIS_MODULE; + #endif if (nvos_find_agp_capability(dev)) { /* @@ -534,7 +538,9 @@ goto failed; } - entry->owner = THIS_MODULE; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) + entry->owner = THIS_MODULE; + #endif proc_nvidia_agp = entry; entry = create_proc_entry("status", flags, proc_nvidia_agp); @@ -545,7 +551,9 @@ entry->data = nv; entry->read_proc = nv_kern_read_status; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) entry->owner = THIS_MODULE; + #endif entry = create_proc_entry("host-bridge", flags, proc_nvidia_agp); if (!entry) { @@ -555,7 +563,9 @@ entry->data = NULL; entry->read_proc = nv_kern_read_agpinfo; - entry->owner = THIS_MODULE; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) + entry->owner = THIS_MODULE; + #endif entry = create_proc_entry("card", flags, proc_nvidia_agp); if (!entry) { @@ -565,7 +575,9 @@ entry->data = nv; entry->read_proc = nv_kern_read_agpinfo; - entry->owner = THIS_MODULE; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) + entry->owner = THIS_MODULE; + #endif } NV_PCI_DEV_PUT(dev); @@ -576,14 +588,18 @@ goto failed; entry->read_proc = nv_kern_read_version; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) entry->owner = THIS_MODULE; + #endif entry = create_proc_entry("registry", flags, proc_nvidia); if (!entry) goto failed; entry->read_proc = nv_kern_read_registry; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) entry->owner = THIS_MODULE; + #endif return; @@ -610,7 +626,9 @@ entry->data = (void *)message; entry->read_proc = nv_kern_read_warning; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) entry->owner = THIS_MODULE; + #endif #endif }