struct rpc_procinfo contains function pointers, and marking it as constant avoids it being able to be used as an attach vector for code injections.
Showing the changes to include/linux (2 of 16 files). Show all
Unified · Split
| @@ -39,7 +39,7 @@ struct rpc_clnt { · 38 unmodified lines | |||
| 39 | struct list_head cl_tasks; /* List of tasks */ | 39 | struct list_head cl_tasks; /* List of tasks */ |
| 40 | spinlock_t cl_lock; /* spinlock */ | 40 | spinlock_t cl_lock; /* spinlock */ |
| 41 | struct rpc_xprt __rcu * cl_xprt; /* transport */ | 41 | struct rpc_xprt __rcu * cl_xprt; /* transport */ |
| 42 | struct rpc_procinfo * cl_procinfo; /* procedure info */ | 42 | const struct rpc_procinfo *cl_procinfo; /* procedure info */ |
| 43 | u32 cl_prog, /* RPC program number */ | 43 | u32 cl_prog, /* RPC program number */ |
| 44 | cl_vers, /* RPC version number */ | 44 | cl_vers, /* RPC version number */ |
| 45 | cl_maxproc; /* max procedure number */ | 45 | cl_maxproc; /* max procedure number */ |
| @@ -87,7 +87,7 @@ struct rpc_program { · 41 unmodified lines | |||
| 87 | struct rpc_version { | 87 | struct rpc_version { |
| 88 | u32 number; /* version number */ | 88 | u32 number; /* version number */ |
| 89 | unsigned int nrprocs; /* number of procs */ | 89 | unsigned int nrprocs; /* number of procs */ |
| 90 | struct rpc_procinfo * procs; /* procedure array */ | 90 | const struct rpc_procinfo *procs; /* procedure array */ |
| 91 | unsigned int *counts; /* call counts */ | 91 | unsigned int *counts; /* call counts */ |
| 92 | }; | 92 | }; |
| 93 | 93 | ||
| @@ -22,7 +22,7 @@ · 21 unmodified lines | |||
| 22 | */ | 22 | */ |
| 23 | struct rpc_procinfo; | 23 | struct rpc_procinfo; |
| 24 | struct rpc_message { | 24 | struct rpc_message { |
| 25 | struct rpc_procinfo * rpc_proc; /* Procedure information */ | 25 | const struct rpc_procinfo *rpc_proc; /* Procedure information */ |
| 26 | void * rpc_argp; /* Arguments */ | 26 | void * rpc_argp; /* Arguments */ |
| 27 | void * rpc_resp; /* Result */ | 27 | void * rpc_resp; /* Result */ |
| 28 | struct rpc_cred * rpc_cred; /* Credentials */ | 28 | struct rpc_cred * rpc_cred; /* Credentials */ |