bfad_im_slave_alloc(struct scsi_device *sdev)
 {
        struct fc_rport *rport = starget_to_rport(scsi_target(sdev));
-       struct bfad_itnim_data_s *itnim_data =
-                               (struct bfad_itnim_data_s *) rport->dd_data;
-       struct bfa_s *bfa = itnim_data->itnim->bfa_itnim->bfa;
+       struct bfad_itnim_data_s *itnim_data;
+       struct bfa_s *bfa;
 
        if (!rport || fc_remote_port_chkready(rport))
                return -ENXIO;
 
+       itnim_data = (struct bfad_itnim_data_s *) rport->dd_data;
+       bfa = itnim_data->itnim->bfa_itnim->bfa;
+
        if (bfa_get_lun_mask_status(bfa) == BFA_LUNMASK_ENABLED) {
                /*
                 * We should not mask LUN 0 - since this will translate
        /* For fibre channel services type 0x20 */
        fc_host_supported_fc4s(host)[7] = 1;
 
-       strncpy(symname, bfad->bfa_fcs.fabric.bport.port_cfg.sym_name.symname,
+       strlcpy(symname, bfad->bfa_fcs.fabric.bport.port_cfg.sym_name.symname,
                BFA_SYMNAME_MAXLEN);
        sprintf(fc_host_symbolic_name(host), "%s", symname);