Re: [take12 0/3] kevent: Generic event handling mechanism.

From: Jari Sundell
Date: Wed Aug 23 2006 - 05:46:43 EST


On 8/23/06, Evgeniy Polyakov <johnpol@xxxxxxxxxxx> wrote:
On Wed, Aug 23, 2006 at 10:22:06AM +0200, Jari Sundell (sundell.software@xxxxxxxxx) wrote:
> On 8/23/06, Evgeniy Polyakov <johnpol@xxxxxxxxxxx> wrote:
> >void * in structure exported to userspace is forbidden.
>
> Only void * I'm seeing belongs to the user, (udata) perhaps you are
> talking of something different?

Yes, exactly about it.

I put union {
u32 a[2];
void *b;
}
epcially to eliminate that problem.

It's just random data of a known maximum size appended to the struct,
I'm sure you can find a clean way to handle it. If you mangle the
first variable name in your union, you'll end up with something that
should be usable instead of udata.

And I'm not that sure aboit stuff like uptr_t or how they call pointers
in userspace and kernelspace.

Well, I can't find any use of pointers in your struct ukevent, nor in
any of the kqueue events in my man page. So if this is a deficit it
applies to both, I guess?

ukevent is aligned to 8 bytes already (it's size selected to be 40 bytes),
so it should not be a problem.

> Eric

Even if it is so, wouldn't it be better to be explicit about it?

Rakshasa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/