Re: [PATCH v4 15/22] objtool: Prevent kCFI hashes from being decoded as instructions

Song Liu <[email protected]>
Newsgroups org.kernel.vger.live-patching,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel
Message-ID <CAPhsuW5tzBOHnw42d31r_5k9eS28VrDLGXoUzS=hYkZmAyRbhw@mail.gmail.com>
On Sat, Aug 8, 2026 at 4:18 PM Josh Poimboeuf <[email protected]> wrote:
[...]
>
> +/*
> + * ARM64 mapping symbols ($d, $x, $a, __pi_$d, etc) which mark transitions
> + * between code and data.
> + */
> +static inline bool is_mapping_sym(struct symbol *sym)
> +{
> +       return is_notype_sym(sym) && strchr(sym->name, '$');
> +}
> +
> +static inline bool is_data_mapping_sym(struct symbol *sym)
> +{
> +       const char *dollar;
> +
> +       if (!is_mapping_sym(sym))
> +               return false;
> +
> +       dollar = strchr(sym->name, '$');
> +       return dollar && dollar[1] == 'd';

nit: is_data_mapping_sym() calls strchr() twice. Maybe we can
optimize it by eliminating a strchr()?

Thanks,
Song

> +}
> +
>  static inline bool is_global_sym(struct symbol *sym)
>  {
>         return sym->bind == STB_GLOBAL;
> @@ -508,6 +528,9 @@ static inline void set_sym_next_reloc(struct reloc *reloc, struct reloc *next)
>  #define sec_for_each_sym(sec, sym)                                     \
>         list_for_each_entry(sym, &sec->symbol_list, list)
>
> +#define sec_for_each_sym_from(sec, sym)                                        \
> +       list_for_each_entry_from(sym, &sec->symbol_list, list)
> +
>  #define sec_prev_sym(sym)                                              \
>         sym->sec && sym->list.prev != &sym->sec->symbol_list ?          \
>         list_prev_entry(sym, list) : NULL
> --
> 2.54.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.