fglrx: Unknown symbol verify_area
I just upgraded to linux 2.6.14, which seems to work fine here. Finally, the ipw2200 driver got integrated, so I don’t have the possibility to forget it anymore :)
In Linux 2.6.14 though, developers have decided to finally remove verify_area(), which was deprecated since a while and superceded by access_ok(). This has the drawback of breaking ATI’s proprietary drivers, as as many proprietary vendors, they didn’t move their ass to replace the deprecated stuff they use, before it was too late. So with 2.6.14, modprob’ing fglrx gives:
fglrx: Unknown symbol verify_area
I wrote a little module that puts back this symbol, so I can still use the stupid proprietary driver. Get it there. Now ATI, please do us a favor and update your driver.
October 31st, 2005 at 00:28
Thanks for your module, it worked for me…I really hate ati drivers…I think I’ll buy a nvidia card next time.
October 31st, 2005 at 02:16
great! thanks very much for this workaround! woohoo!
chun
October 31st, 2005 at 08:29
I think I’ll buy a nvidia card next time
I personnaly think nvidia’s drivers are worse than ATI’s ones, because nVidia’s X driver relies on the kernel driver to load. Which means no X if for some reason the kernel driver can’t load. ATI’s drivers on the other hand, still run X although with no openGL direct rendering, if the kernel driver can’t load.
Also, r300.sourceforge.net is progressing nicely and we’ll soon have free (as in freedom) drivers for ATI cards.
October 31st, 2005 at 19:38
How do you install the patch ?
after i extract the tar and run make i get.
CC /root/verify_area/src/verify_area.mod.o
/root/verify_area/src/verify_area.mod.c:9: error: variable `__this_module’ has initializer but incomplete type
/root/verify_area/src/verify_area.mod.c:10: error: unknown field `name’ specified in initializer
/root/verify_area/src/verify_area.mod.c:10: warning: excess elements in struct initializer
/root/verify_area/src/verify_area.mod.c:10: warning: (near initialization for `__this_module’)
/root/verify_area/src/verify_area.mod.c:11: error: unknown field `init’ specified in initializer
/root/verify_area/src/verify_area.mod.c:11: warning: excess elements in struct initializer
/root/verify_area/src/verify_area.mod.c:11: warning: (near initialization for `__this_module’)
/root/verify_area/src/verify_area.mod.c:9: error: storage size of `__this_module’ isn’t known
make[3]: *** [/root/verify_area/src/verify_area.mod.o] Error 1
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.14-ck1′
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/verify_area/src’
make: *** [all] Error 2
November 1st, 2005 at 23:13
This also fixes proprietary management modules for Dell PowerEdges! Thanks!
November 2nd, 2005 at 12:55
the commands (as root) to compile and install this verify_area module is:
cd /usr/src/
make all
make install
the goal is to have a file named “verify_area.ko” into the kernel module directory “/lib/modules/2.6.14/extra/”.
now just reboot and check if the new module get loaded on loading of the fglrx ATI Radeon driver (if not, just force-load it, adding a line in with /etc/modules ).
bye from Ferrara, Italy
GF
November 2nd, 2005 at 19:38
Best way to fix this is probably to update the driver yourself. Just cd to /lib/modules/fglrx/build_mod then run
perl -pi -e ’s/verify_area/access_ok/’ firegl_public.c drm_os_linux.h
(Or just use a text editor on firegl_public.c and drm_os_linux.h and manually change verify_area to access_ok for all occurences in those files..)
.. Worked for me, anyhow.
November 3rd, 2005 at 14:17
man i just spent the past 3 days screwing with the kernel to get this work and then i finally find this.
i love you.
November 3rd, 2005 at 18:26
you can also change the name of the function in firegl_public.c …
maybe its easier ;)
November 6th, 2005 at 13:33
Nice patch.
Alternatively, instead of messing with the kernel, I patched the driver itself.
since verify_area() and access_ok() have the same signature, you can change the two occurences of verify_area() to access_ok() in :
drm_os_linux.h: line 78
firegl_public.c: line 1478
and recompile the module.
Works like a charm here.
November 6th, 2005 at 15:06
Did you notice the return value was different ? verify_area() returns 0 if OK, -EFAULT otherwise, whereas access_ok() returns TRUE if OK, FALSE otherwise.
November 6th, 2005 at 19:59
I noticed that, but since I’m not familiar with the kernel internals, I tried this at first and it worked.
but this can simply be solved, and here’s a patch for firegl_public.c:
http://chady.net/data/fglrx.patch
I also noticed that the macro in drm_os_linux.h isn’t used anywhere, so it can be skipped.
Thanx for pointing this out.
November 9th, 2005 at 19:18
“Me too” – thank you, worked for me after having been confused over half an hour about the misfunction of the ATI-Thing.
regards,
w.f.
November 14th, 2005 at 00:00
Hey everyone,
Ahh, looked all day long for the right answer. Thanks!
But I’ve one question to all ATI-users:
I’ve really hard problems with my ATI Radeon.
fglrxinfo puts out the correct vendor (ATI), render (RADEON) and version string. But everytime, when I switch to the textconsole and try to switch back to X, everything’s locked. Can’t use the mouse, keyboard and see only the half of my screen. It works fine, when I kill X and start it from the textconsole. Then, there’s no problem to switch between X and the textconsole.
I realy do not undestand that!
kernel: 2.6.13.2
CONFIG_AGP=m
CONFIG_AGP_SIS=m
CONFIG_DRM=n
CONFIG_DRM_RADEON=n
The framebuffer is off.
Can s.o. help me?
Thank you, Ralf
December 20th, 2005 at 23:58
Your module works excellent.
However sadly I’m missing two extra symbols that are apparently no longer present in 2.6.14
fglrx: Unknown symbol register_ioctl32_conversion
fglrx: Unknown symbol unregister_ioctl32_conversion
So for me it’s back to 2.6.13 I’m afraid
Thanx anyway,
Ramon
February 22nd, 2006 at 09:33
Thanks a lot for your module!
I had trouble installing DELL’s Openmanage Server Administrator software on a server due to the missing verify_area symbol in a 2.6.15 kernel.
Installed you module and hey: it works!
Hopefully DELL will stop using this deprecated symbol soon.
Thanks,
Karel
April 21st, 2006 at 21:06
It fixed Paragon NTFS for Linux 3.0 under gentoo 2.6.15 too!
Thanks!
June 13th, 2006 at 11:38
Awesome, this fixes Dell OMSA 4.5 for Redhat 9.0 as well.
Thanks!
July 11th, 2006 at 07:23
I’m excited about trying out the patch you created, but I’m a new Linux user and on the road a lot away from my users group; thus, I’m stuck. I don’t want to screw up my system when I enter the terminal mode as root. Do I need to first pull up some set of text entries to insert the patch in a specific chronology, or do I just log in as root then paste the body of the patch text in its entirety as you’ve typed it? Forgive my level of understanding. We all had to start somewhere; for me it’s with a Linux exclusive laptop. Thanks Gurus
July 11th, 2006 at 07:28
Simp: You don\’t have special things to do, because it\’s not really a patch but a standalone module.
All you have to do, when running under the kernel you want to have verify_area available, is:
$ wget http://www.geekounet.org/patch.....rea.tar.gz
$ tar -zxf verify_area.tar.gz
$ cd verify_area
$ make
$ sudo make install
$ sudo modprobe verify_area
And that\’s all :)
August 1st, 2006 at 22:08
I don’t think you have to blame ATI. Those guys maintaing kernel version 2.6 have no sense of responsibility at all. I’ve run into this problem many-many times that symbols present in one version are removed from the next, new symbols added, etc. So you can’t get everything working since one of your cards needs 2.6.x (exactly) and your other card needs 2.6.y.
Older kernel were much more predictable than this shit.
Thank’s for the patch anyway, I could get my USB WLAN adapter to work under 2.6.14