Commit 2412e927 authored by Chuck Lever's avatar Chuck Lever Committed by J. Bruce Fields

sunrpc: Const-ify instances of struct svc_xprt_ops

Close an attack vector by moving the arrays of server-side transport
methods to read-only memory.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent bac966d6
...@@ -31,7 +31,7 @@ struct svc_xprt_ops { ...@@ -31,7 +31,7 @@ struct svc_xprt_ops {
struct svc_xprt_class { struct svc_xprt_class {
const char *xcl_name; const char *xcl_name;
struct module *xcl_owner; struct module *xcl_owner;
struct svc_xprt_ops *xcl_ops; const struct svc_xprt_ops *xcl_ops;
struct list_head xcl_list; struct list_head xcl_list;
u32 xcl_max_payload; u32 xcl_max_payload;
int xcl_ident; int xcl_ident;
...@@ -49,7 +49,7 @@ struct svc_xpt_user { ...@@ -49,7 +49,7 @@ struct svc_xpt_user {
struct svc_xprt { struct svc_xprt {
struct svc_xprt_class *xpt_class; struct svc_xprt_class *xpt_class;
struct svc_xprt_ops *xpt_ops; const struct svc_xprt_ops *xpt_ops;
struct kref xpt_ref; struct kref xpt_ref;
struct list_head xpt_list; struct list_head xpt_list;
struct list_head xpt_ready; struct list_head xpt_ready;
......
...@@ -687,7 +687,7 @@ static struct svc_xprt *svc_udp_create(struct svc_serv *serv, ...@@ -687,7 +687,7 @@ static struct svc_xprt *svc_udp_create(struct svc_serv *serv,
return svc_create_socket(serv, IPPROTO_UDP, net, sa, salen, flags); return svc_create_socket(serv, IPPROTO_UDP, net, sa, salen, flags);
} }
static struct svc_xprt_ops svc_udp_ops = { static const struct svc_xprt_ops svc_udp_ops = {
.xpo_create = svc_udp_create, .xpo_create = svc_udp_create,
.xpo_recvfrom = svc_udp_recvfrom, .xpo_recvfrom = svc_udp_recvfrom,
.xpo_sendto = svc_udp_sendto, .xpo_sendto = svc_udp_sendto,
...@@ -1229,7 +1229,7 @@ static void svc_bc_tcp_sock_detach(struct svc_xprt *xprt) ...@@ -1229,7 +1229,7 @@ static void svc_bc_tcp_sock_detach(struct svc_xprt *xprt)
{ {
} }
static struct svc_xprt_ops svc_tcp_bc_ops = { static const struct svc_xprt_ops svc_tcp_bc_ops = {
.xpo_create = svc_bc_tcp_create, .xpo_create = svc_bc_tcp_create,
.xpo_detach = svc_bc_tcp_sock_detach, .xpo_detach = svc_bc_tcp_sock_detach,
.xpo_free = svc_bc_sock_free, .xpo_free = svc_bc_sock_free,
...@@ -1263,7 +1263,7 @@ static void svc_cleanup_bc_xprt_sock(void) ...@@ -1263,7 +1263,7 @@ static void svc_cleanup_bc_xprt_sock(void)
} }
#endif /* CONFIG_SUNRPC_BACKCHANNEL */ #endif /* CONFIG_SUNRPC_BACKCHANNEL */
static struct svc_xprt_ops svc_tcp_ops = { static const struct svc_xprt_ops svc_tcp_ops = {
.xpo_create = svc_tcp_create, .xpo_create = svc_tcp_create,
.xpo_recvfrom = svc_tcp_recvfrom, .xpo_recvfrom = svc_tcp_recvfrom,
.xpo_sendto = svc_tcp_sendto, .xpo_sendto = svc_tcp_sendto,
......
...@@ -70,7 +70,7 @@ static int svc_rdma_has_wspace(struct svc_xprt *xprt); ...@@ -70,7 +70,7 @@ static int svc_rdma_has_wspace(struct svc_xprt *xprt);
static int svc_rdma_secure_port(struct svc_rqst *); static int svc_rdma_secure_port(struct svc_rqst *);
static void svc_rdma_kill_temp_xprt(struct svc_xprt *); static void svc_rdma_kill_temp_xprt(struct svc_xprt *);
static struct svc_xprt_ops svc_rdma_ops = { static const struct svc_xprt_ops svc_rdma_ops = {
.xpo_create = svc_rdma_create, .xpo_create = svc_rdma_create,
.xpo_recvfrom = svc_rdma_recvfrom, .xpo_recvfrom = svc_rdma_recvfrom,
.xpo_sendto = svc_rdma_sendto, .xpo_sendto = svc_rdma_sendto,
...@@ -98,7 +98,7 @@ static struct svc_xprt *svc_rdma_bc_create(struct svc_serv *, struct net *, ...@@ -98,7 +98,7 @@ static struct svc_xprt *svc_rdma_bc_create(struct svc_serv *, struct net *,
static void svc_rdma_bc_detach(struct svc_xprt *); static void svc_rdma_bc_detach(struct svc_xprt *);
static void svc_rdma_bc_free(struct svc_xprt *); static void svc_rdma_bc_free(struct svc_xprt *);
static struct svc_xprt_ops svc_rdma_bc_ops = { static const struct svc_xprt_ops svc_rdma_bc_ops = {
.xpo_create = svc_rdma_bc_create, .xpo_create = svc_rdma_bc_create,
.xpo_detach = svc_rdma_bc_detach, .xpo_detach = svc_rdma_bc_detach,
.xpo_free = svc_rdma_bc_free, .xpo_free = svc_rdma_bc_free,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment