diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2016-04-07 01:15:58 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2016-04-07 01:15:58 +0000 |
commit | fcb94cded0aed5555c717ea04fc78575f7831b3c (patch) | |
tree | 95df320a207fbbd34abee2987f9f8c24511fc9ef /swapon.c | |
parent | f2f91c09333f5d60cdd032388dd1a43b37a8bd38 (diff) | |
download | strace-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.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -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; } |