llc: Constify struct llc_sap_state_trans
'struct llc_sap_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 339 456 24 819 333 net/llc/llc_s_st.o After: ===== text data bss dec hex filename 683 144 0 827 33b net/llc/llc_s_st.o Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/9d17587639195ee94b74ff06a11ef97d1833ee52.1720973710.git.christophe.jaillet@wanadoo.fr Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
70de41ef78
commit
0970bf676f
@ -30,7 +30,7 @@ struct llc_sap_state_trans {
|
|||||||
|
|
||||||
struct llc_sap_state {
|
struct llc_sap_state {
|
||||||
u8 curr_state;
|
u8 curr_state;
|
||||||
struct llc_sap_state_trans **transitions;
|
const struct llc_sap_state_trans **transitions;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* only access to SAP state table */
|
/* only access to SAP state table */
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
* last entry for this state
|
* last entry for this state
|
||||||
* all members are zeros, .bss zeroes it
|
* all members are zeros, .bss zeroes it
|
||||||
*/
|
*/
|
||||||
static struct llc_sap_state_trans llc_sap_state_trans_end;
|
static const struct llc_sap_state_trans llc_sap_state_trans_end;
|
||||||
|
|
||||||
/* state LLC_SAP_STATE_INACTIVE transition for
|
/* state LLC_SAP_STATE_INACTIVE transition for
|
||||||
* LLC_SAP_EV_ACTIVATION_REQ event
|
* LLC_SAP_EV_ACTIVATION_REQ event
|
||||||
@ -34,14 +34,14 @@ static const llc_sap_action_t llc_sap_inactive_state_actions_1[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_inactive_state_trans_1 = {
|
static const struct llc_sap_state_trans llc_sap_inactive_state_trans_1 = {
|
||||||
.ev = llc_sap_ev_activation_req,
|
.ev = llc_sap_ev_activation_req,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_inactive_state_actions_1,
|
.ev_actions = llc_sap_inactive_state_actions_1,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* array of pointers; one to each transition */
|
/* array of pointers; one to each transition */
|
||||||
static struct llc_sap_state_trans *llc_sap_inactive_state_transitions[] = {
|
static const struct llc_sap_state_trans *llc_sap_inactive_state_transitions[] = {
|
||||||
[0] = &llc_sap_inactive_state_trans_1,
|
[0] = &llc_sap_inactive_state_trans_1,
|
||||||
[1] = &llc_sap_state_trans_end,
|
[1] = &llc_sap_state_trans_end,
|
||||||
};
|
};
|
||||||
@ -52,7 +52,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_1[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_1 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_1 = {
|
||||||
.ev = llc_sap_ev_rx_ui,
|
.ev = llc_sap_ev_rx_ui,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_1,
|
.ev_actions = llc_sap_active_state_actions_1,
|
||||||
@ -64,7 +64,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_2[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_2 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_2 = {
|
||||||
.ev = llc_sap_ev_unitdata_req,
|
.ev = llc_sap_ev_unitdata_req,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_2,
|
.ev_actions = llc_sap_active_state_actions_2,
|
||||||
@ -76,7 +76,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_3[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_3 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_3 = {
|
||||||
.ev = llc_sap_ev_xid_req,
|
.ev = llc_sap_ev_xid_req,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_3,
|
.ev_actions = llc_sap_active_state_actions_3,
|
||||||
@ -88,7 +88,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_4[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_4 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_4 = {
|
||||||
.ev = llc_sap_ev_rx_xid_c,
|
.ev = llc_sap_ev_rx_xid_c,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_4,
|
.ev_actions = llc_sap_active_state_actions_4,
|
||||||
@ -100,7 +100,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_5[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_5 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_5 = {
|
||||||
.ev = llc_sap_ev_rx_xid_r,
|
.ev = llc_sap_ev_rx_xid_r,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_5,
|
.ev_actions = llc_sap_active_state_actions_5,
|
||||||
@ -112,7 +112,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_6[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_6 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_6 = {
|
||||||
.ev = llc_sap_ev_test_req,
|
.ev = llc_sap_ev_test_req,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_6,
|
.ev_actions = llc_sap_active_state_actions_6,
|
||||||
@ -124,7 +124,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_7[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_7 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_7 = {
|
||||||
.ev = llc_sap_ev_rx_test_c,
|
.ev = llc_sap_ev_rx_test_c,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_7
|
.ev_actions = llc_sap_active_state_actions_7
|
||||||
@ -136,7 +136,7 @@ static const llc_sap_action_t llc_sap_active_state_actions_8[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_8 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_8 = {
|
||||||
.ev = llc_sap_ev_rx_test_r,
|
.ev = llc_sap_ev_rx_test_r,
|
||||||
.next_state = LLC_SAP_STATE_ACTIVE,
|
.next_state = LLC_SAP_STATE_ACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_8,
|
.ev_actions = llc_sap_active_state_actions_8,
|
||||||
@ -150,14 +150,14 @@ static const llc_sap_action_t llc_sap_active_state_actions_9[] = {
|
|||||||
[1] = NULL,
|
[1] = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct llc_sap_state_trans llc_sap_active_state_trans_9 = {
|
static const struct llc_sap_state_trans llc_sap_active_state_trans_9 = {
|
||||||
.ev = llc_sap_ev_deactivation_req,
|
.ev = llc_sap_ev_deactivation_req,
|
||||||
.next_state = LLC_SAP_STATE_INACTIVE,
|
.next_state = LLC_SAP_STATE_INACTIVE,
|
||||||
.ev_actions = llc_sap_active_state_actions_9
|
.ev_actions = llc_sap_active_state_actions_9
|
||||||
};
|
};
|
||||||
|
|
||||||
/* array of pointers; one to each transition */
|
/* array of pointers; one to each transition */
|
||||||
static struct llc_sap_state_trans *llc_sap_active_state_transitions[] = {
|
static const struct llc_sap_state_trans *llc_sap_active_state_transitions[] = {
|
||||||
[0] = &llc_sap_active_state_trans_2,
|
[0] = &llc_sap_active_state_trans_2,
|
||||||
[1] = &llc_sap_active_state_trans_1,
|
[1] = &llc_sap_active_state_trans_1,
|
||||||
[2] = &llc_sap_active_state_trans_3,
|
[2] = &llc_sap_active_state_trans_3,
|
||||||
|
@ -114,12 +114,12 @@ void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb)
|
|||||||
* Returns the pointer to found transition on success or %NULL for
|
* Returns the pointer to found transition on success or %NULL for
|
||||||
* failure.
|
* failure.
|
||||||
*/
|
*/
|
||||||
static struct llc_sap_state_trans *llc_find_sap_trans(struct llc_sap *sap,
|
static const struct llc_sap_state_trans *llc_find_sap_trans(struct llc_sap *sap,
|
||||||
struct sk_buff *skb)
|
struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
struct llc_sap_state_trans *rc = NULL;
|
const struct llc_sap_state_trans *rc = NULL;
|
||||||
struct llc_sap_state_trans **next_trans;
|
const struct llc_sap_state_trans **next_trans;
|
||||||
struct llc_sap_state *curr_state = &llc_sap_state_table[sap->state - 1];
|
struct llc_sap_state *curr_state = &llc_sap_state_table[sap->state - 1];
|
||||||
/*
|
/*
|
||||||
* Search thru events for this state until list exhausted or until
|
* Search thru events for this state until list exhausted or until
|
||||||
@ -143,7 +143,7 @@ static struct llc_sap_state_trans *llc_find_sap_trans(struct llc_sap *sap,
|
|||||||
* Returns 0 for success and 1 for failure of at least one action.
|
* Returns 0 for success and 1 for failure of at least one action.
|
||||||
*/
|
*/
|
||||||
static int llc_exec_sap_trans_actions(struct llc_sap *sap,
|
static int llc_exec_sap_trans_actions(struct llc_sap *sap,
|
||||||
struct llc_sap_state_trans *trans,
|
const struct llc_sap_state_trans *trans,
|
||||||
struct sk_buff *skb)
|
struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
@ -166,8 +166,8 @@ static int llc_exec_sap_trans_actions(struct llc_sap *sap,
|
|||||||
*/
|
*/
|
||||||
static int llc_sap_next_state(struct llc_sap *sap, struct sk_buff *skb)
|
static int llc_sap_next_state(struct llc_sap *sap, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
|
const struct llc_sap_state_trans *trans;
|
||||||
int rc = 1;
|
int rc = 1;
|
||||||
struct llc_sap_state_trans *trans;
|
|
||||||
|
|
||||||
if (sap->state > LLC_NR_SAP_STATES)
|
if (sap->state > LLC_NR_SAP_STATES)
|
||||||
goto out;
|
goto out;
|
||||||
|
Loading…
Reference in New Issue
Block a user