[PATCH smatch 1/4] smatch: add helper to get member deref name without type prefix
Harshit Mogalapalli <[email protected]> Wed, 22 Apr 2026 07:32:16 -0700
| Newsgroups | org.kernel.vger.smatch |
|---|---|
| Message-ID | <[email protected]> |
Some checkers need just the field name from a dereference expression. get_member_name() returns a fully qualified string with struct/union prefixes (for example, "(struct foo)->bar"). Add get_member_name_no_prefix() as a small helper that reuses the existing expression normalization path and returns only expr->member->name. This keeps call sites simple, avoids ad hoc string parsing, and provides a clear primitive for checks that key on member identity. Assisted-by: Codex:gpt-5.3-codex Co-developed-by: Dan Carpenter <[email protected]> Signed-off-by: Harshit Mogalapalli <[email protected]> --- smatch.h | 1 + smatch_helper.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/smatch.h b/smatch.h index d4605f5b2a79..ce4d70c02366 100644 --- a/smatch.h +++ b/smatch.h @@ -573,6 +573,7 @@ int is_error_return(struct expression *expr); int getting_address(struct expression *expr); int get_struct_and_member(struct expression *expr, const char **type, const char **member); char *get_member_name(struct expression *expr); +char *get_member_name_no_prefix(struct expression *expr); char *get_fnptr_name(struct expression *expr); int cmp_pos(struct position pos1, struct position pos2); int positions_eq(struct position pos1, struct position pos2); diff --git a/smatch_helper.c b/smatch_helper.c index de6842450d47..fe322bc4479a 100644 --- a/smatch_helper.c +++ b/smatch_helper.c @@ -1203,6 +1203,17 @@ done: return member; } +char *get_member_name_no_prefix(struct expression *expr) +{ + expr = strip_expr(expr); + if (!expr || expr->type != EXPR_DEREF) + return NULL; + if (!expr->member) + return NULL; + + return alloc_sname(expr->member->name); +} + void clear_strip_cache(void) { memset(strip_cache, 0, sizeof(strip_cache)); -- 2.47.3