diff -ruN nvidia-173.14.16.orig/conftest.sh nvidia-173.14.16.new/conftest.sh --- nvidia-173.14.16.orig/conftest.sh 2009-08-20 14:49:55.000000000 +0100 +++ nvidia-173.14.16.new/conftest.sh 2009-08-20 16:46:27.000000000 +0100 @@ -929,6 +929,31 @@ 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-173.14.16.orig/nv.c nvidia-173.14.16.new/nv.c --- nvidia-173.14.16.orig/nv.c 2009-08-20 14:49:55.000000000 +0100 +++ nvidia-173.14.16.new/nv.c 2009-08-20 16:49:56.000000000 +0100 @@ -607,9 +607,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++) { @@ -629,7 +631,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)) { /* @@ -642,7 +646,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); @@ -653,7 +659,9 @@ entry->data = nv; entry->read_proc = nv_kern_read_status; - entry->owner = THIS_MODULE; + #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) { @@ -663,7 +671,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) { @@ -673,7 +683,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); @@ -684,14 +696,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; @@ -718,7 +734,9 @@ entry->data = (void *)message; entry->read_proc = nv_kern_read_warning; - entry->owner = THIS_MODULE; + #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER) + entry->owner = THIS_MODULE; + #endif #endif }