Commit cdbb096a authored by Yonghong Song's avatar Yonghong Song Committed by Alexei Starovoitov

bpf: btf: implement btf_name_valid_identifier()

Function btf_name_valid_identifier() have been implemented in
bpf-next commit 2667a262 ("bpf: btf: Add BTF_KIND_FUNC and
BTF_KIND_FUNC_PROTO"). Backport this function so later patch
can use it.

Fixes: 69b693f0 ("bpf: btf: Introduce BPF Type Format (BTF)")
Signed-off-by: default avatarYonghong Song <yhs@fb.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent d78a5ebd
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include <uapi/linux/types.h> #include <uapi/linux/types.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/ctype.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/anon_inodes.h> #include <linux/anon_inodes.h>
...@@ -426,6 +427,30 @@ static bool btf_name_offset_valid(const struct btf *btf, u32 offset) ...@@ -426,6 +427,30 @@ static bool btf_name_offset_valid(const struct btf *btf, u32 offset)
offset < btf->hdr.str_len; offset < btf->hdr.str_len;
} }
/* Only C-style identifier is permitted. This can be relaxed if
* necessary.
*/
static bool btf_name_valid_identifier(const struct btf *btf, u32 offset)
{
/* offset must be valid */
const char *src = &btf->strings[offset];
const char *src_limit;
if (!isalpha(*src) && *src != '_')
return false;
/* set a limit on identifier length */
src_limit = src + KSYM_NAME_LEN;
src++;
while (*src && src < src_limit) {
if (!isalnum(*src) && *src != '_')
return false;
src++;
}
return !*src;
}
static const char *btf_name_by_offset(const struct btf *btf, u32 offset) static const char *btf_name_by_offset(const struct btf *btf, u32 offset)
{ {
if (!offset) if (!offset)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment