summaryrefslogtreecommitdiff
path: root/swapon.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2016-04-07 01:15:58 +0000
committerDmitry V. Levin <ldv@altlinux.org>2016-04-07 01:15:58 +0000
commitfcb94cded0aed5555c717ea04fc78575f7831b3c (patch)
tree95df320a207fbbd34abee2987f9f8c24511fc9ef /swapon.c
parentf2f91c09333f5d60cdd032388dd1a43b37a8bd38 (diff)
downloadstrace-fcb94cded0aed5555c717ea04fc78575f7831b3c.tar.gz
Fix decoding of swapon flags
* swapon.c (SYS_FUNC(swapon)): Print priority regardless of SWAP_FLAG_PREFER flag being set. * tests/swap.c (error_msg): Handle EINVAL. (main): Check decoding of swapon flags.
Diffstat (limited to 'swapon.c')
-rw-r--r--swapon.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/swapon.c b/swapon.c
index 5f6df0b85..ef88b1ceb 100644
--- a/swapon.c
+++ b/swapon.c
@@ -6,14 +6,19 @@
SYS_FUNC(swapon)
{
- int flags = tcp->u_arg[1];
+ unsigned int flags = tcp->u_arg[1];
+ unsigned int prio = flags & SWAP_FLAG_PRIO_MASK;
+ flags &= ~SWAP_FLAG_PRIO_MASK;
printpath(tcp, tcp->u_arg[0]);
tprints(", ");
- printflags(swap_flags, flags & ~SWAP_FLAG_PRIO_MASK,
- "SWAP_FLAG_???");
- if (flags & SWAP_FLAG_PREFER)
- tprintf("|%d", flags & SWAP_FLAG_PRIO_MASK);
+ if (flags) {
+ printflags(swap_flags, flags, "SWAP_FLAG_???");
+ if (prio)
+ tprintf("|%u", prio);
+ } else {
+ tprintf("%u", prio);
+ }
return RVAL_DECODED;
}