Re: module: Do not paper over type mismatches in module_param_call()

From: Jessica Yu
Date: Tue Oct 31 2017 - 10:46:14 EST


+++ Kees Cook [30/10/17 14:20 -0700]:
On Tue, Oct 17, 2017 at 7:04 PM, Kees Cook <keescook@xxxxxxxxxxxx> wrote:
(re-sending to Jessica's @korg address...)

The module_param_call() macro was explicitly casting the .set and .get
function prototypes away with (void *). This can lead to hard-to-find
type mismatches. Additionally, it creates problems for static checkers
and Control Flow Itegrity compiler features, which depend on clustering
function call sites based on prototype signature.

This removes the casts and fixes all the incorrect prototypes tree-wide.

A quick ping on this. I'd really like to land this in 4.15, as it's
relatively trivial. How does this look to you Jessica?

Hey Kees!

Sorry for the delay, and thanks for fixing this up - had to dig deep
through git history to remind myself why these casts and that weird
compiler type-check were being done in the first place :-/ I guess
the original reason was backward compatibility.

Anyways I've pushed this to modules-next, thanks!

Jessica