bpf: remember meta->iter info only for initialized iters
authorAndrii Nakryiko <andrii@kernel.org>
Wed, 22 Mar 2023 23:25:02 +0000 (16:25 -0700)
committerMartin KaFai Lau <martin.lau@kernel.org>
Thu, 23 Mar 2023 00:04:47 +0000 (17:04 -0700)
commitb63cbc490e18d893632929b8faa55bb28da3fcd4
treea6d2301d8bfc328cd8671bc3211998ab4c128629
parent1a3148fc171f5cde11b4c24e808a953ff725a3e2
bpf: remember meta->iter info only for initialized iters

For iter_new() functions iterator state's slot might not be yet
initialized, in which case iter_get_spi() will return -ERANGE. This is
expected and is handled properly. But for iter_next() and iter_destroy()
cases iter slot is supposed to be initialized and correct, so -ERANGE is
not possible.

Move meta->iter.{spi,frameno} initialization into iter_next/iter_destroy
handling branch to make it more explicit that valid information will be
remembered in meta->iter block for subsequent use in process_iter_next_call(),
avoiding confusingly looking -ERANGE assignment for meta->iter.spi.

Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20230322232502.836171-1-andrii@kernel.org
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
kernel/bpf/verifier.c