mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00

The return ranges of some bpf lsm test progs can not be deduced by the verifier accurately. To avoid erroneous rejections, add explicit return value checks for these progs. Signed-off-by: Xu Kuohai <xukuohai@huawei.com> Link: https://lore.kernel.org/r/20240719110059.797546-8-xukuohai@huaweicloud.com Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
29 lines
592 B
C
29 lines
592 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __ERR_H__
|
|
#define __ERR_H__
|
|
|
|
#define MAX_ERRNO 4095
|
|
#define IS_ERR_VALUE(x) (unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO
|
|
|
|
#define __STR(x) #x
|
|
|
|
#define set_if_not_errno_or_zero(x, y) \
|
|
({ \
|
|
asm volatile ("if %0 s< -4095 goto +1\n" \
|
|
"if %0 s<= 0 goto +1\n" \
|
|
"%0 = " __STR(y) "\n" \
|
|
: "+r"(x)); \
|
|
})
|
|
|
|
static inline int IS_ERR_OR_NULL(const void *ptr)
|
|
{
|
|
return !ptr || IS_ERR_VALUE((unsigned long)ptr);
|
|
}
|
|
|
|
static inline long PTR_ERR(const void *ptr)
|
|
{
|
|
return (long) ptr;
|
|
}
|
|
|
|
#endif /* __ERR_H__ */
|