]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
bpf: Remove truncation test in bpf_strtol and bpf_strtoul helpers
authorDaniel Borkmann <daniel@iogearbox.net>
Fri, 13 Sep 2024 19:17:47 +0000 (21:17 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 13 Sep 2024 20:17:55 +0000 (13:17 -0700)
Both bpf_strtol() and bpf_strtoul() helpers passed a temporary "long long"
respectively "unsigned long long" to __bpf_strtoll() / __bpf_strtoull().

Later, the result was checked for truncation via _res != ({unsigned,} long)_res
as the destination buffer for the BPF helpers was of type {unsigned,} long
which is 32bit on 32bit architectures.

Given the latter was a bug in the helper signatures where the destination buffer
got adjusted to {s,u}64, the truncation check can now be removed.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20240913191754.13290-2-daniel@iogearbox.net
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/bpf/helpers.c

index 0cf42be528901283d411aa12bf7ccf47dda51950..5404bb964d833b96a81534a536b3f486d626eb4d 100644 (file)
@@ -526,8 +526,6 @@ BPF_CALL_4(bpf_strtol, const char *, buf, size_t, buf_len, u64, flags,
        err = __bpf_strtoll(buf, buf_len, flags, &_res);
        if (err < 0)
                return err;
-       if (_res != (long)_res)
-               return -ERANGE;
        *res = _res;
        return err;
 }
@@ -554,8 +552,6 @@ BPF_CALL_4(bpf_strtoul, const char *, buf, size_t, buf_len, u64, flags,
                return err;
        if (is_negative)
                return -EINVAL;
-       if (_res != (unsigned long)_res)
-               return -ERANGE;
        *res = _res;
        return err;
 }