summaryrefslogtreecommitdiffstats
path: root/fs/nfs/callback.c
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2017-08-01 12:00:06 -0400
committerJ. Bruce Fields <bfields@redhat.com>2017-08-24 22:13:50 -0400
commitafea5657c20b11ec9f895ac5cc33b560fb1e0276 (patch)
tree33068b83b4eabc452bd4a69b5fa6f31a16ce9354 /fs/nfs/callback.c
parentc1df609d9dcec5dcb89ee3091edc3671da1c9996 (diff)
sunrpc: Const-ify struct sv_serv_ops
Close an attack vector by moving the arrays of per-server methods to read-only memory. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfs/callback.c')
-rw-r--r--fs/nfs/callback.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index 34323877ec13..2cddf7f437e6 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -226,26 +226,26 @@ err_bind:
226 return ret; 226 return ret;
227} 227}
228 228
229static struct svc_serv_ops nfs40_cb_sv_ops = { 229static const struct svc_serv_ops nfs40_cb_sv_ops = {
230 .svo_function = nfs4_callback_svc, 230 .svo_function = nfs4_callback_svc,
231 .svo_enqueue_xprt = svc_xprt_do_enqueue, 231 .svo_enqueue_xprt = svc_xprt_do_enqueue,
232 .svo_setup = svc_set_num_threads_sync, 232 .svo_setup = svc_set_num_threads_sync,
233 .svo_module = THIS_MODULE, 233 .svo_module = THIS_MODULE,
234}; 234};
235#if defined(CONFIG_NFS_V4_1) 235#if defined(CONFIG_NFS_V4_1)
236static struct svc_serv_ops nfs41_cb_sv_ops = { 236static const struct svc_serv_ops nfs41_cb_sv_ops = {
237 .svo_function = nfs41_callback_svc, 237 .svo_function = nfs41_callback_svc,
238 .svo_enqueue_xprt = svc_xprt_do_enqueue, 238 .svo_enqueue_xprt = svc_xprt_do_enqueue,
239 .svo_setup = svc_set_num_threads_sync, 239 .svo_setup = svc_set_num_threads_sync,
240 .svo_module = THIS_MODULE, 240 .svo_module = THIS_MODULE,
241}; 241};
242 242
243static struct svc_serv_ops *nfs4_cb_sv_ops[] = { 243static const struct svc_serv_ops *nfs4_cb_sv_ops[] = {
244 [0] = &nfs40_cb_sv_ops, 244 [0] = &nfs40_cb_sv_ops,
245 [1] = &nfs41_cb_sv_ops, 245 [1] = &nfs41_cb_sv_ops,
246}; 246};
247#else 247#else
248static struct svc_serv_ops *nfs4_cb_sv_ops[] = { 248static const struct svc_serv_ops *nfs4_cb_sv_ops[] = {
249 [0] = &nfs40_cb_sv_ops, 249 [0] = &nfs40_cb_sv_ops,
250 [1] = NULL, 250 [1] = NULL,
251}; 251};
@@ -254,8 +254,8 @@ static struct svc_serv_ops *nfs4_cb_sv_ops[] = {
254static struct svc_serv *nfs_callback_create_svc(int minorversion) 254static struct svc_serv *nfs_callback_create_svc(int minorversion)
255{ 255{
256 struct nfs_callback_data *cb_info = &nfs_callback_info[minorversion]; 256 struct nfs_callback_data *cb_info = &nfs_callback_info[minorversion];
257 const struct svc_serv_ops *sv_ops;
257 struct svc_serv *serv; 258 struct svc_serv *serv;
258 struct svc_serv_ops *sv_ops;
259 259
260 /* 260 /*
261 * Check whether we're already up and running. 261 * Check whether we're already up and running.