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 | 39 | struct list_head cl_tasks; /* List of tasks */ |
| 40 | 40 | spinlock_t cl_lock; /* spinlock */ |
| 41 | 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 | 43 | u32 cl_prog, /* RPC program number */ |
| 44 | 44 | cl_vers, /* RPC version number */ |
| 45 | 45 | cl_maxproc; /* max procedure number */ |
| @@ -87,7 +87,7 @@ struct rpc_program { · 41 unmodified lines | ||
| 87 | 87 | struct rpc_version { |
| 88 | 88 | u32 number; /* version number */ |
| 89 | 89 | unsigned int nrprocs; /* number of procs */ |
| 90 | − struct rpc_procinfo * procs; /* procedure array */ | |
| 90 | + const struct rpc_procinfo *procs; /* procedure array */ | |
| 91 | 91 | unsigned int *counts; /* call counts */ |
| 92 | 92 | }; |
| 93 | 93 | |
| @@ -22,7 +22,7 @@ · 21 unmodified lines | ||
| 22 | 22 | */ |
| 23 | 23 | struct rpc_procinfo; |
| 24 | 24 | struct rpc_message { |
| 25 | − struct rpc_procinfo * rpc_proc; /* Procedure information */ | |
| 25 | + const struct rpc_procinfo *rpc_proc; /* Procedure information */ | |
| 26 | 26 | void * rpc_argp; /* Arguments */ |
| 27 | 27 | void * rpc_resp; /* Result */ |
| 28 | 28 | struct rpc_cred * rpc_cred; /* Credentials */ |