On Wed, May 27, 2009 at 7:37 AM, David Howells <[email protected]> wrote:
>
> Andreas Hirczy <[email protected]> wrote:
>
>> May 27 08:15:42 faeppc02 kernel: kernel BUG at kernel/cred.c:360!
>> ...
>> May 27 08:15:42 faeppc02 kernel: EIP is at commit_creds+0x24/0x12c
>> ...
>> May 27 08:15:42 faeppc02 kernel:  [<c016c20b>] ? sys_faccessat+0x90/0x14a
>
> The problem is that sys_faccessat() overrides the current credentials of the
> task with slightly modified ones before calling into the filesystem. You're
> then calling commit_creds() which would otherwise revert that change, and so
> commit_creds() throws an assertion failure:
>
>        BUG_ON(task->cred != task->real_cred);
>
> I have a series of about 150 patches standing at about 5MB in size to pass the
> effective creds down through the function calls rather than stashing it in the
> task_struct, but it's quite icky, especially when it comes to dealing with
> ioctl...
>
> What exactly is crset() doing at the moment?
>
> David

There's already a patch for this in CVS - see delta
STABLE14-linux26-defer-cred-changing-20090511 for the diff and a
little explanation.

crset() is trying to adjust the groups so that they show a newly added
keyring based PAG for things that rely on the group list.  The fix is
simply to defer this adjustment until we're not in a state where the
credentials are overridden.

Marc
_______________________________________________
OpenAFS-info mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-info

Reply via email to