[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: fedora 9 help with unknown symbols in kernel -- cap_capget cap_capset_set

Skunk Worx wrote:
stan wrote:
Skunk Worx wrote:

I asked over on 'users' a few days ago and no help yet. I hope you don't mind my repeating the question here.

We're a small company using some altera-based boards and our own driver to control them.

Fedora 7 was working well, but we are getting some unknown symbols while evaluating an upgrade to F9.

Any help, comments, suggestions are greatly appreciated.


code and issues :

  struct sched_param param = {70};
  kernel_cap_t effective, inheritable, permitted, all;

  cap_set_full(all); // be sure we have enough permissions to call
                     // sched_setscheduler.
                     // probably only need CAP_SYS_NICE, but let's be
                     // "(un)safe"

  // save old permissions
  cap_capget(current,&effective, &inheritable, &permitted);

  // setup permissions to do this
  cap_capset_set(current,&all, &all, &all);

  // setup realtime priority

  // restore permissions
  cap_capset_set(current,&effective, &inheritable, &permitted);

used to be able to do this in f7 / 2.6.23 kernel, now we get:

WARNING: "cap_capset_set" [/usr/CSM/src/ONI/oni_driver/oni.ko] undefined!
WARNING: "cap_capget" [/usr/CSM/src/ONI/oni_driver/oni.ko] undefined!

when building and of course:

oni: Unknown symbol cap_capget
oni: Unknown symbol cap_capset_set

when insmod'ing under f9 / 2.6.25

Now if you are writing drivers you are sophisticated users. I would think you have already tried these, but just in case.

We write our own driver, there is no "oni.ko" in Fedora...we add it.

I misunderstood. I thought you were linking a kernel module and it wasn't finding symbols.

We've searched for the POSIX cap_* functions, and from what we can tell they should be exported, but for some reason no longer appear to be. I am not sure if this is the right language to explain the problem, but we can't seem to get to the symbols any more.

I think you are saying that they are no longer in a header file. Can you use the hidden definition from the kernel module where they are defined? That is, redefine them the same way as where they are used but not exported. There shouldn't be any conflicts as you have checked that already. :-) It is a kludge, but should work well enough until you can get them back in a header file.
I think it's more the kernel API than the hardware, we had the card made (actually about 100 of them) and are trying to jump from F7 to F9 (2.6.23 to 2.6.25) but something appears to have changed on the POSIX API or perhaps we are doing something wrong.
Your description is what I meant. As I understand it, they are very strict now in accountability for changes in the kernel. You should be able to find who made the change and why. Seems more likely to me that a change was made for another reason and this is a side effect. Has the definition of POSIX changed recently?

If I don't see any more comments I'll have to migrate over the the kernel lists, where they will probably ask me to go pester the distro!
I don't follow it, but there might be a Fedora/RedHat kernel list.

Thanks Stan,

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]