Linux Kernel 2.6.26.3-29 "error: ‘proc_root’ undeclared" got you down?
For the unfortunate person who is a gadget freak and likes to stay current with the latest technology, running the Creative X-Fi turned out to be a real pain in the arse under Linux. For a very long time there was absolutely no support from any of the open source drivers, and Creative announced that they would maybe at some point release open sauce drivers of their own if we were good children. Thankfully, they did. BUT, as expected, they were buggy as hell, confusing, and only for x86_64! Well, I guess free is free.
Regardless, getting the drivers to work under Linux was still a right royal pain, until earlier this year when Open Sound System released a slew of diffrerent distribution packages claiming they had an easily installable and workable driver set for the X-Fi. I was skeptical at first, but after installing a very painless RPM for Fedora 9 off of their website, the sound worked great! No problems whatsoever and Songbird seems to play very well with it.
Unfortunately, a few months have gone by now and I just today decided to do a full upgrade to the latest Fedora 9 updates which broke the OSS package. :(
Whenever a new kernel is installed, the package detects the change and rebuilds the drivers against the updated kernel. This has worked fine for the past couple of updates, but the latest bump to 2.6.26.3-29.fc9.x86_64 was a bit much and the compile failed.
Building module osscore Failed to compile OSS make -C /lib/modules/2.6.26.3-29.fc9.x86_64/build M=/usr/lib/oss/build modules make[1]: Entering directory `/usr/src/kernels/2.6.26.3-29.fc9.x86_64' CC [M] /usr/lib/oss/build/osscore.o /usr/lib/oss/build/osscore.c: In function ‘init_proc_fs’: /usr/lib/oss/build/osscore.c:288: error: ‘proc_root’ undeclared (first use in this function) /usr/lib/oss/build/osscore.c:288: error: (Each undeclared identifier is reported only once /usr/lib/oss/build/osscore.c:288: error: for each function it appears in.) /usr/lib/oss/build/osscore.c: In function ‘uninit_proc_fs’: /usr/lib/oss/build/osscore.c:311: error: ‘proc_root’ undeclared (first use in this function) make[2]: *** [/usr/lib/oss/build/osscore.o] Error 1 make[1]: *** [_module_/usr/lib/oss/build] Error 2 make[1]: Leaving directory `/usr/src/kernels/2.6.26.3-29.fc9.x86_64' make: *** [default] Error 2 Relinking the OSS kernel modules failed Starting OSS failed
Booooo. Yet, after some digging aorund on Google, it turns out the fix isn't all that bad. I didn't see any exact posts related to OSS and this kernel, and there are no newer OSS packages, but apparently the kernel changes broke other packages. I ended up stumbling upon this post. Not exactly related, but the build is failing for the same reason so it was worth a shot... and it works! I have no idea whether or not replacing the undeclared function with NULL is really the right fix or not, but it allowed the package to relink against the new kernel and I've been playing music all day with no issues. Here's the patch. Hope this helps!
--- osscore.c 2008-09-27 18:24:02.000000000 -0400
+++ osscore.c.fixed 2008-09-27 18:22:04.000000000 -0400
@@ -285,7 +285,7 @@
init_proc_fs (void)
{
if ((oss_proc_root =
- create_proc_entry ("opensound", 0700 | S_IFDIR, &proc_root)) == NULL)
+ create_proc_entry ("opensound", 0700 | S_IFDIR, NULL)) == NULL)
{
oss_cmn_err (CE_CONT, "Cannot create /proc/opensound\n");
return;
@@ -308,7 +308,7 @@
{
if (oss_proc_devfiles)
remove_proc_entry ("devfiles", oss_proc_root);
- remove_proc_entry ("opensound", &proc_root);
+ remove_proc_entry ("opensound", NULL);
}
}


Comments
Hi! This post was mentioned
Hi!
This post was mentioned in the OSS forum[0], so I wanted to point out that upstream has been fixed for a while (exact same fix[1]), and also another linking issues[2]. If anyone has a linking problem I would suggest redownloading the binary rpm or checking the source from the mercurial repository. I guess updating the rpm silently wasn't the best idea from 4front...
[0] http://www.4front-tech.com/forum/viewtopic.php?p=10838#10838
[1] http://mercurial.opensound.com/?diff/667e943f20b2/setup/Linux/oss/build/...
[2]symbol versioning problem:
http://mercurial.opensound.com/?rev/23251d9ce39d
http://mercurial.opensound.com/?rev/e8a1f69532c3
http://mercurial.opensound.com/?rev/443d57c33fb0
Post new comment