[systemd-devel] [PATCH] Fix broken syscall(__NR_fanotify_mark... on 32bit mips.
David Daney
ddaney at caviumnetworks.com
Wed Apr 20 18:10:30 PDT 2011
On 04/20/2011 06:08 PM, fykcee1 at gmail.com wrote:
> 2011/4/21 David Daney<ddaney at caviumnetworks.com>:
>> On 04/20/2011 11:09 AM, Lennart Poettering wrote:
>>>
>>> On Wed, 20.04.11 10:36, David Daney (ddaney at caviumnetworks.com) wrote:
>>>
>>>> You would have to do something like this (untested):
>>>>
>>>> int foo_fanotify_mark(int fanotify_fd, unsigned int flags, u64 mask,
>>>> int dfd, const char __user * pathname)
>>>> {
>>>> u32 mask_low = (u32)mask;
>>>> u32 mask_high = (u32)(mask>> 32);
>>>>
>>>> return syscall(4337, fanotify_fd, flags, mask_low, mask_high, dfd,
>>>> pathname);
>>>>
>>>> }
>>>>
>>>> The order of mask_low, mask_high in the syscall argument list
>>>> depends on the endianness. Figuring out the correct order is left
>>>> as an exercise for the reader.
>>>
>>> That's basically the same patch as this one, right?
>>>
>>>
>>> http://lists.freedesktop.org/archives/systemd-devel/attachments/20110420/be2d393b/attachment.obj
>>>
>>
>> It looks like it might do the same thing. Someone should try it on an o32
>> MIPS userland running on a mips64 kernel.
> I tested it on o32 userland + n64 kernel. The patch works.
>
Yes, but did you test it with an n32 userland?
It would break there.
The gating condition should be as I said in the other message:
#if defined(__mips__) && (_MIPS_SIM == _ABIO32)
I did however misspeak when I said n32 is __LP64__, it is *not* and
therein lies the problem.
David Daney
More information about the systemd-devel
mailing list