diff options
author | Christophe JAILLET <christophe.jaillet@wanadoo.fr> | 2024-07-14 18:05:56 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-07-15 08:51:01 -0700 |
commit | 70de41ef78573ce958ac04ecc2b5671851723c59 (patch) | |
tree | 170892633c1db1b91861211131b71b9dd6fec716 /net/llc/llc_conn.c | |
parent | f96eb1172ed8d74cfed7da92d2045ec64028cc38 (diff) | |
download | lwn-70de41ef78573ce958ac04ecc2b5671851723c59.tar.gz lwn-70de41ef78573ce958ac04ecc2b5671851723c59.zip |
llc: Constify struct llc_conn_state_trans
'struct llc_conn_state_trans' are not modified in this driver.
Constifying this structure moves some data to a read-only section, so
increase overall security.
On a x86_64, with allmodconfig, as an example:
Before:
======
text data bss dec hex filename
13923 10896 32 24851 6113 net/llc/llc_c_st.o
After:
=====
text data bss dec hex filename
21859 3328 0 25187 6263 net/llc/llc_c_st.o
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/87cda89e4c9414e71d1a54bb1eb491b0e7f70375.1720973029.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/llc/llc_conn.c')
-rw-r--r-- | net/llc/llc_conn.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/net/llc/llc_conn.c b/net/llc/llc_conn.c index 0a3f5e0bec00..afc6974eafda 100644 --- a/net/llc/llc_conn.c +++ b/net/llc/llc_conn.c @@ -34,10 +34,10 @@ static int llc_find_offset(int state, int ev_type); static void llc_conn_send_pdus(struct sock *sk); static int llc_conn_service(struct sock *sk, struct sk_buff *skb); static int llc_exec_conn_trans_actions(struct sock *sk, - struct llc_conn_state_trans *trans, + const struct llc_conn_state_trans *trans, struct sk_buff *ev); -static struct llc_conn_state_trans *llc_qualify_conn_ev(struct sock *sk, - struct sk_buff *skb); +static const struct llc_conn_state_trans *llc_qualify_conn_ev(struct sock *sk, + struct sk_buff *skb); /* Offset table on connection states transition diagram */ static int llc_offset_table[NBR_CONN_STATES][NBR_CONN_EV]; @@ -356,9 +356,9 @@ static void llc_conn_send_pdus(struct sock *sk) */ static int llc_conn_service(struct sock *sk, struct sk_buff *skb) { - int rc = 1; + const struct llc_conn_state_trans *trans; struct llc_sock *llc = llc_sk(sk); - struct llc_conn_state_trans *trans; + int rc = 1; if (llc->state > NBR_CONN_STATES) goto out; @@ -384,10 +384,10 @@ out: * This function finds transition that matches with happened event. * Returns pointer to found transition on success, %NULL otherwise. */ -static struct llc_conn_state_trans *llc_qualify_conn_ev(struct sock *sk, - struct sk_buff *skb) +static const struct llc_conn_state_trans *llc_qualify_conn_ev(struct sock *sk, + struct sk_buff *skb) { - struct llc_conn_state_trans **next_trans; + const struct llc_conn_state_trans **next_trans; const llc_conn_ev_qfyr_t *next_qualifier; struct llc_conn_state_ev *ev = llc_conn_ev(skb); struct llc_sock *llc = llc_sk(sk); @@ -432,7 +432,7 @@ static struct llc_conn_state_trans *llc_qualify_conn_ev(struct sock *sk, * success, 1 to indicate failure of at least one action. */ static int llc_exec_conn_trans_actions(struct sock *sk, - struct llc_conn_state_trans *trans, + const struct llc_conn_state_trans *trans, struct sk_buff *skb) { int rc = 0; @@ -635,8 +635,8 @@ u8 llc_data_accept_state(u8 state) */ static u16 __init llc_find_next_offset(struct llc_conn_state *state, u16 offset) { + const struct llc_conn_state_trans **next_trans; u16 cnt = 0; - struct llc_conn_state_trans **next_trans; for (next_trans = state->transitions + offset; (*next_trans)->ev; next_trans++) |