Merge branch 'Check cfi_stubs before registering a struct_ops type.'
Kui-Feng Lee says:
====================
Recently, st_ops->cfi_stubs was introduced. However, the upcoming new
struct_ops support (e.g. sched_ext) is not aware of this and does not
provide its own cfi_stubs. The kernel ends up NULL dereferencing the
st_ops->cfi_stubs.
Considering struct_ops supports kernel module now, this NULL check
is necessary. This patch set is to reject struct_ops registration
that does not provide a cfi_stubs.
Changes from v4:
 - Remove changes of check_member.
 - Remove checks of the pointers in cfi_stubs[].
Changes from v3:
 - Remove CFI stub function for get_info.
 - Allow passing NULL prog arg to check_member of struct
   bpf_struct_ops type.
 - Call check_member to determines if a CFI stub function should be
   defined for an operator.
Changes from v2:
 - Add a stub function for get_info of struct tcp_congestion_ops.
Changes from v1:
 - Check *(void **)(cfi_stubs + moff) to make sure stub functions are
   provided for every operator.
 - Add a test case to ensure that struct_ops rejects incomplete
   cfi_stub.
v4: https://lore.kernel.org/all/
20240221075213.
2071454-1-thinker.li@gmail.com/
v3: https://lore.kernel.org/all/
20240216193434.735874-1-thinker.li@gmail.com/
v2: https://lore.kernel.org/all/
20240216020350.
2061373-1-thinker.li@gmail.com/
v1: https://lore.kernel.org/all/
20240215022401.
1882010-1-thinker.li@gmail.com/
====================
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>