mirror of
https://github.com/systemd/systemd.git
synced 2024-11-08 11:27:32 +03:00
missing: Fix broken syscall(__NR_fanotify_mark... on o32 mips.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23618562 MIPS o32 ABI enforces that 64bit arguments should be 64bit-aligned, and the third argument of syscall(__NR_fanotify_mark, ...) is 64bit and not 64bit-aligned on o32 mips platform, thus extra padding is inserted before it. The syscall function doesn't know the prototype of fanotify_mark, so the padding will be passed into kernel as valid argument.
This commit is contained in:
parent
13f9123298
commit
373c23b27f
@ -125,7 +125,18 @@ static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags)
|
|||||||
|
|
||||||
static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
|
static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
|
||||||
int dfd, const char *pathname) {
|
int dfd, const char *pathname) {
|
||||||
|
#if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32
|
||||||
|
union {
|
||||||
|
uint64_t _64;
|
||||||
|
uint32_t _32[2];
|
||||||
|
} _mask;
|
||||||
|
_mask._64 = mask;
|
||||||
|
|
||||||
|
return syscall(__NR_fanotify_mark, fanotify_fd, flags,
|
||||||
|
_mask._32[0], _mask._32[1], dfd, pathname);
|
||||||
|
#else
|
||||||
return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
|
return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef BTRFS_IOCTL_MAGIC
|
#ifndef BTRFS_IOCTL_MAGIC
|
||||||
|
Loading…
Reference in New Issue
Block a user