Fix printing of fanotify_mark mask argument

* fanotify.c (SYS_FUNC(fanotify_mark)): Print mask using printflags64.
This commit is contained in:
Дмитрий Левин 2016-05-16 21:54:03 +00:00
parent 55044d9670
commit 6e381c67fd

View File

@ -39,9 +39,8 @@
SYS_FUNC(fanotify_init) SYS_FUNC(fanotify_init)
{ {
unsigned flags; unsigned int flags = tcp->u_arg[0];
flags = tcp->u_arg[0];
printxval(fan_classes, flags & FAN_ALL_CLASS_BITS, "FAN_CLASS_???"); printxval(fan_classes, flags & FAN_ALL_CLASS_BITS, "FAN_CLASS_???");
flags &= ~FAN_ALL_CLASS_BITS; flags &= ~FAN_ALL_CLASS_BITS;
if (flags) { if (flags) {
@ -59,23 +58,21 @@ SYS_FUNC(fanotify_init)
SYS_FUNC(fanotify_mark) SYS_FUNC(fanotify_mark)
{ {
unsigned long long mask = 0;
int argn;
printfd(tcp, tcp->u_arg[0]); printfd(tcp, tcp->u_arg[0]);
tprints(", "); tprints(", ");
printflags(fan_mark_flags, (unsigned) tcp->u_arg[1], "FAN_MARK_???"); printflags(fan_mark_flags, tcp->u_arg[1], "FAN_MARK_???");
tprints(", "); tprints(", ");
/* /*
* the mask argument is defined as 64-bit, * the mask argument is defined as 64-bit,
* but kernel uses the lower 32 bits only. * but kernel uses the lower 32 bits only.
*/ */
argn = getllval(tcp, &mask, 2); unsigned long long mask = 0;
int argn = getllval(tcp, &mask, 2);
#ifdef HPPA #ifdef HPPA
/* Parsic is weird. See arch/parisc/kernel/sys_parisc32.c. */ /* Parsic is weird. See arch/parisc/kernel/sys_parisc32.c. */
mask = (mask << 32) | (mask >> 32); mask = (mask << 32) | (mask >> 32);
#endif #endif
printflags(fan_event_flags, mask, "FAN_???"); printflags64(fan_event_flags, mask, "FAN_???");
tprints(", "); tprints(", ");
if ((int) tcp->u_arg[argn] == FAN_NOFD) if ((int) tcp->u_arg[argn] == FAN_NOFD)
tprints("FAN_NOFD, "); tprints("FAN_NOFD, ");