diff --git a/fcst/ft_cmd.c b/fcst/ft_cmd.c index 48a45140b..b99880c1a 100644 --- a/fcst/ft_cmd.c +++ b/fcst/ft_cmd.c @@ -261,18 +261,18 @@ static void ft_cmd_done(struct ft_cmd *fcmd) #endif if (sp) -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - lport->tt.exch_done(sp); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fc_exch_done(sp); +#else + lport->tt.exch_done(sp); #endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36) if (fr_seq(fp)) -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - lport->tt.seq_release(fr_seq(fp)); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fc_seq_release(fr_seq(fp)); +#else + lport->tt.seq_release(fr_seq(fp)); #endif #endif @@ -395,18 +395,18 @@ int ft_send_response(struct scst_cmd *cmd) /* * Send response. */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - fcmd->seq = lport->tt.seq_start_next(fcmd->seq); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fcmd->seq = fc_seq_start_next(fcmd->seq); +#else + fcmd->seq = lport->tt.seq_start_next(fcmd->seq); #endif fc_fill_fc_hdr(fp, FC_RCTL_DD_CMD_STATUS, ep->did, ep->sid, FC_TYPE_FCP, FC_FC_EX_CTX | FC_FC_LAST_SEQ | FC_FC_END_SEQ, 0); -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq, fp)); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) error = FCST_INJ_SEND_ERR(fc_seq_send(lport, fcmd->seq, fp)); +#else + error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq, fp)); #endif if (error < 0) { pr_err("Sending response for exchange with OX_ID %#x and RX_ID" @@ -505,17 +505,17 @@ int ft_send_xfer_rdy(struct scst_cmd *cmd) txrdy->ft_data_ro = 0; txrdy->ft_burst_len = htonl(scst_cmd_get_bufflen(cmd)); -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - fcmd->seq = lport->tt.seq_start_next(fcmd->seq); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fcmd->seq = fc_seq_start_next(fcmd->seq); +#else + fcmd->seq = lport->tt.seq_start_next(fcmd->seq); #endif fc_fill_fc_hdr(fp, FC_RCTL_DD_DATA_DESC, ep->did, ep->sid, FC_TYPE_FCP, FC_FC_EX_CTX | FC_FC_END_SEQ | FC_FC_SEQ_INIT, 0); -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq, fp)); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) error = FCST_INJ_SEND_ERR(fc_seq_send(lport, fcmd->seq, fp)); +#else + error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq, fp)); #endif switch (error) { case 0: @@ -574,30 +574,22 @@ static void ft_send_resp_status(struct fc_frame *rx_fp, u32 status, #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36) sp = fr_seq(rx_fp); -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) sp = lport->tt.seq_start_next(sp); -#else - sp = fc_seq_start_next(sp); -#endif ep = fc_seq_exch(sp); fc_fill_fc_hdr(fp, FC_RCTL_DD_CMD_STATUS, ep->did, ep->sid, FC_TYPE_FCP, FC_FC_EX_CTX | FC_FC_LAST_SEQ | FC_FC_END_SEQ, 0); -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) lport->tt.seq_send(lport, sp, fp); -#else - fc_seq_send(lport, sp, fp); -#endif out: ; #else fc_fill_reply_hdr(fp, rx_fp, FC_RCTL_DD_CMD_STATUS, 0); sp = fr_seq(fp); if (sp) -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - lport->tt.seq_send(lport, sp, fp); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fc_seq_send(lport, sp, fp); +#else + lport->tt.seq_send(lport, sp, fp); #endif else lport->tt.frame_send(lport, fp); @@ -726,10 +718,10 @@ static void ft_recv_cmd(struct ft_sess *sess, struct fc_frame *fp) #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36) sp = fr_seq(fp); #else -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - sp = lport->tt.seq_assign(lport, fp); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) sp = fc_seq_assign(lport, fp); +#else + sp = lport->tt.seq_assign(lport, fp); #endif if (!sp) goto busy; @@ -779,10 +771,10 @@ static void ft_recv_cmd(struct ft_sess *sess, struct fc_frame *fp) cmd->state = FT_STATE_NEW; fcmd->seq = sp; -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - lport->tt.seq_set_resp(sp, ft_recv_seq, cmd); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fc_seq_set_resp(sp, ft_recv_seq, cmd); +#else + lport->tt.seq_set_resp(sp, ft_recv_seq, cmd); #endif switch (fcp->fc_flags & (FCP_CFL_RDDATA | FCP_CFL_WRDATA)) { @@ -832,10 +824,10 @@ busy: if (fcmd) ft_cmd_done(fcmd); else if (sp) -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - lport->tt.exch_done(sp); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fc_exch_done(sp); +#else + lport->tt.exch_done(sp); #endif } @@ -864,27 +856,21 @@ static void ft_cmd_ls_rjt(struct fc_frame *rx_fp, enum fc_els_rjt_reason reason, rjt->er_reason = reason; rjt->er_explan = explan; -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) sp = lport->tt.seq_start_next(sp); -#else - sp = fc_seq_start_next(sp); -#endif fc_fill_fc_hdr(fp, FC_RCTL_ELS_REP, ep->did, ep->sid, FC_TYPE_FCP, FC_FC_EX_CTX | FC_FC_END_SEQ | FC_FC_LAST_SEQ, 0); -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) lport->tt.seq_send(lport, sp, fp); -#else - fc_seq_send(lport, sp, fp); -#endif #else struct fc_seq_els_data rjt_data; + struct fc_lport *lport; + lport = fr_dev(rx_fp); rjt_data.reason = reason; rjt_data.explan = explan; -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - fr_dev(rx_fp)->tt.seq_els_rsp_send(rx_fp, ELS_LS_RJT, &rjt_data); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fc_seq_els_rsp_send(rx_fp, ELS_LS_RJT, &rjt_data); +#else + lport->tt.seq_els_rsp_send(rx_fp, ELS_LS_RJT, &rjt_data); #endif #endif } diff --git a/fcst/ft_io.c b/fcst/ft_io.c index 727cdf765..42639cbc5 100644 --- a/fcst/ft_io.c +++ b/fcst/ft_io.c @@ -89,10 +89,10 @@ int ft_send_read_data(struct scst_cmd *cmd) mem_len -= tlen; mem_off = tlen; } else -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) - fcmd->seq = lport->tt.seq_start_next(fcmd->seq); -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) fcmd->seq = fc_seq_start_next(fcmd->seq); +#else + fcmd->seq = lport->tt.seq_start_next(fcmd->seq); #endif /* no scatter/gather in skb for odd word length due to fc_seq_send() */ @@ -179,11 +179,11 @@ int ft_send_read_data(struct scst_cmd *cmd) remaining ? (FC_FC_EX_CTX | FC_FC_REL_OFF) : (FC_FC_EX_CTX | FC_FC_REL_OFF | FC_FC_END_SEQ), fh_off); -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0) + error = FCST_INJ_SEND_ERR(fc_seq_send(lport, fcmd->seq, fp)); +#else error = FCST_INJ_SEND_ERR(lport->tt.seq_send(lport, fcmd->seq, fp)); -#else - error = FCST_INJ_SEND_ERR(fc_seq_send(lport, fcmd->seq, fp)); #endif if (error) { pr_warn("Sending frame with oid %#x oxid %#x resp_len" diff --git a/iscsi-scst/usr/target.c b/iscsi-scst/usr/target.c index 0cb47fe31..d942afdf3 100644 --- a/iscsi-scst/usr/target.c +++ b/iscsi-scst/usr/target.c @@ -415,8 +415,7 @@ int target_create(const char *name, struct target **out_target) } memset(target, 0, sizeof(*target)); - strncpy(target->name, name, sizeof(target->name) - 1); - target->name[sizeof(target->name)-1] = '\0'; + strlcpy(target->name, name, sizeof(target->name)); params_set_defaults(target->target_params, target_keys); params_set_defaults(target->session_params, session_keys); diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index 76ca1e1a4..ba690e9a3 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -4870,6 +4870,7 @@ static void scst_put_acg_work(struct work_struct *work) void scst_put_acg(struct scst_acg *acg) { struct scst_acg_put_work *put_work; + bool rc; put_work = kmalloc(sizeof(*put_work), GFP_KERNEL | __GFP_NOFAIL); if (WARN_ON_ONCE(!put_work)) { @@ -4888,7 +4889,9 @@ void scst_put_acg(struct scst_acg *acg) * Schedule the kref_put() call instead of invoking it directly to * avoid deep recursion and a stack overflow. */ - WARN_ON_ONCE(!queue_work(scst_release_acg_wq, &put_work->work)); + rc = queue_work(scst_release_acg_wq, &put_work->work); + WARN_ON_ONCE(!rc); + return; } void scst_get_acg(struct scst_acg *acg)