3 struct non_null_ctltable_elems
{
8 static struct non_null_ctltable_elems non_null_elems
[] = {
9 {.name
= "->procname", .len
= 10},
10 {.name
= "->proc_handler", .len
= 14},
13 static int match_ctl_table_array_sentinel(struct expression
*expr
)
15 char *member_name
= NULL
;
20 member_name
= get_member_name(expr
);
24 if (strncmp(member_name
, "(struct ctl_table)", 18) != 0)
27 for (int i
= 0 ; i
< ARRAY_SIZE(non_null_elems
) ; ++i
) {
28 if (strncmp(member_name
+ 18, non_null_elems
[i
].name
, non_null_elems
[i
].len
) == 0) {
29 sm_warning ("(struct ctl_table)%s cannot be NULL. Expression : %s",
30 non_null_elems
[i
].name
, expr_to_str(expr
));
38 void check_sentinel_ctltable(int id
)
40 if (option_project
!= PROJ_KERNEL
)
43 add_hook(&match_ctl_table_array_sentinel
, EXPR_HOOK
);