avoid calling bb_strtou twice in MIN macro expansion
Also, the maximum allowable value of swap priority is technically SWAP_FLAG_PRIO_MASK >> SWAP_FLAG_PRIO_SHIFT. Signed-off-by: Matt Whitlock <busybox@mattwhitlock.name> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
504fe45f35
commit
c3a27b0bfd
@ -100,12 +100,12 @@ static int do_em_all(void)
|
|||||||
g_flags = 0; /* each swap space might have different flags */
|
g_flags = 0; /* each swap space might have different flags */
|
||||||
p = hasmntopt(m, "pri");
|
p = hasmntopt(m, "pri");
|
||||||
if (p) {
|
if (p) {
|
||||||
/* Max allowed 32767 (==SWAP_FLAG_PRIO_MASK) */
|
/* Max allowed 32767 (== SWAP_FLAG_PRIO_MASK) */
|
||||||
unsigned int swap_prio = MIN(bb_strtou(p + 4 , NULL, 10), SWAP_FLAG_PRIO_MASK);
|
unsigned prio = bb_strtou(p + 4, NULL, 10);
|
||||||
/* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */
|
/* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */
|
||||||
if (errno != ERANGE) {
|
if (errno != ERANGE) {
|
||||||
g_flags = SWAP_FLAG_PREFER |
|
g_flags = SWAP_FLAG_PREFER |
|
||||||
(swap_prio << SWAP_FLAG_PRIO_SHIFT);
|
MIN(prio, SWAP_FLAG_PRIO_MASK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -124,6 +124,9 @@ int swap_on_off_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
|||||||
int swap_on_off_main(int argc UNUSED_PARAM, char **argv)
|
int swap_on_off_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
#if ENABLE_FEATURE_SWAPON_PRI
|
||||||
|
unsigned prio;
|
||||||
|
#endif
|
||||||
|
|
||||||
INIT_G();
|
INIT_G();
|
||||||
|
|
||||||
@ -132,11 +135,11 @@ int swap_on_off_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
#else
|
#else
|
||||||
if (applet_name[5] == 'n')
|
if (applet_name[5] == 'n')
|
||||||
opt_complementary = "p+";
|
opt_complementary = "p+";
|
||||||
ret = getopt32(argv, (applet_name[5] == 'n') ? "ap:" : "a", &g_flags);
|
ret = getopt32(argv, (applet_name[5] == 'n') ? "ap:" : "a", &prio);
|
||||||
|
|
||||||
if (ret & 2) { // -p
|
if (ret & 2) { // -p
|
||||||
g_flags = SWAP_FLAG_PREFER |
|
g_flags = SWAP_FLAG_PREFER |
|
||||||
((g_flags & SWAP_FLAG_PRIO_MASK) << SWAP_FLAG_PRIO_SHIFT);
|
MIN(prio, SWAP_FLAG_PRIO_MASK);
|
||||||
ret &= 1;
|
ret &= 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user