Re: how to detect a 32 bit process on 64 bit kernel

Brian Gerst
2004-12-13T21:33:20Z

Michael S. Tsirkin wrote:

> Hello!
> Quoting r. Christoph Hellwig (hch@infradead.org) "Re: how to detect a 32 bit process on 64 bit kernel":
>
>>>If no - would not it make a sence to add e.g. a flag in the
>>>task struct, to make it possible?
>>
>>The kernel code shouldn't know. If your driver needs this information
>>something is seriously wrong with it.
>
>
> A character driver I am working on gets passed a structure
> from user space by implementing a write file operation.
> The structure includes a pointer and so the format varies
> between a 32 and 64 bit processes.

The most portable way to do this is to have the first member of the
structure be a 32-bit value containing the size of the structure. This
can then be used to identify what the structure format is. This also
has the advantage of future-proofing the interface (add a field? no
problem, the new size can be checked for). Just be very careful that
the size from userspace is not trusted (ie. only allow known sizes).

--
Brian Gerst