Prepare to mark sensitive kernel structures for randomization by making
sure they're using designated initializers. This also initializes the
array members using the enum used to look up __port_action entries.

Signed-off-by: Kees Cook <keesc...@chromium.org>
---
v3:
- drop bfa_module_s changes, since that has been removed entirely; hch.
- init array with enum literals; hch.
---
 drivers/scsi/bfa/bfa_fcs_lport.c | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c
index 4ddda72f60e6..638c0a2857f7 100644
--- a/drivers/scsi/bfa/bfa_fcs_lport.c
+++ b/drivers/scsi/bfa/bfa_fcs_lport.c
@@ -89,16 +89,27 @@ static struct {
        void            (*online) (struct bfa_fcs_lport_s *port);
        void            (*offline) (struct bfa_fcs_lport_s *port);
 } __port_action[] = {
-       {
-       bfa_fcs_lport_unknown_init, bfa_fcs_lport_unknown_online,
-                       bfa_fcs_lport_unknown_offline}, {
-       bfa_fcs_lport_fab_init, bfa_fcs_lport_fab_online,
-                       bfa_fcs_lport_fab_offline}, {
-       bfa_fcs_lport_n2n_init, bfa_fcs_lport_n2n_online,
-                       bfa_fcs_lport_n2n_offline}, {
-       bfa_fcs_lport_loop_init, bfa_fcs_lport_loop_online,
-                       bfa_fcs_lport_loop_offline},
-       };
+       [BFA_FCS_FABRIC_UNKNOWN] = {
+               .init = bfa_fcs_lport_unknown_init,
+               .online = bfa_fcs_lport_unknown_online,
+               .offline = bfa_fcs_lport_unknown_offline
+       },
+       [BFA_FCS_FABRIC_SWITCHED] = {
+               .init = bfa_fcs_lport_fab_init,
+               .online = bfa_fcs_lport_fab_online,
+               .offline = bfa_fcs_lport_fab_offline
+       },
+       [BFA_FCS_FABRIC_N2N] = {
+               .init = bfa_fcs_lport_n2n_init,
+               .online = bfa_fcs_lport_n2n_online,
+               .offline = bfa_fcs_lport_n2n_offline
+       },
+       [BFA_FCS_FABRIC_LOOP] = {
+               .init = bfa_fcs_lport_loop_init,
+               .online = bfa_fcs_lport_loop_online,
+               .offline = bfa_fcs_lport_loop_offline
+       },
+};
 
 /*
  *  fcs_port_sm FCS logical port state machine
-- 
2.7.4


-- 
Kees Cook
Pixel Security

Reply via email to