Skip to content

Commit

Permalink
net: pktgen: Fix interface flags printing
Browse files Browse the repository at this point in the history
Device flags are displayed incorrectly:
1) The comparison (i == F_FLOW_SEQ) is always false, because F_FLOW_SEQ
is equal to (1 << FLOW_SEQ_SHIFT) == 2048, and the maximum value
of the 'i' variable is (NR_PKT_FLAG - 1) == 17. It should be compared
with FLOW_SEQ_SHIFT.

2) Similarly to the F_IPSEC flag.

3) Also add spaces to the print end of the string literal "spi:%u"
to prevent the output from merging with the flag that follows.

Found by InfoTeCS on behalf of Linux Verification Center
(linuxtesting.org) with SVACE.

Fixes: 99c6d3d ("pktgen: Remove brute-force printing of flags")
Signed-off-by: Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Gavrilov Ilia authored and David S. Miller committed Oct 18, 2023
1 parent f6c7b42 commit 1d30162
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions net/core/pktgen.c
Original file line number Diff line number Diff line change
Expand Up @@ -669,19 +669,19 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
seq_puts(seq, " Flags: ");

for (i = 0; i < NR_PKT_FLAGS; i++) {
if (i == F_FLOW_SEQ)
if (i == FLOW_SEQ_SHIFT)
if (!pkt_dev->cflows)
continue;

if (pkt_dev->flags & (1 << i))
if (pkt_dev->flags & (1 << i)) {
seq_printf(seq, "%s ", pkt_flag_names[i]);
else if (i == F_FLOW_SEQ)
seq_puts(seq, "FLOW_RND ");

#ifdef CONFIG_XFRM
if (i == F_IPSEC && pkt_dev->spi)
seq_printf(seq, "spi:%u", pkt_dev->spi);
if (i == IPSEC_SHIFT && pkt_dev->spi)
seq_printf(seq, "spi:%u ", pkt_dev->spi);
#endif
} else if (i == FLOW_SEQ_SHIFT) {
seq_puts(seq, "FLOW_RND ");
}
}

seq_puts(seq, "\n");
Expand Down

0 comments on commit 1d30162

Please sign in to comment.