Commit ddfbab46 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
 "Three fixes: The t10-pi one is a regression from the 4.19 release, the
  qla2xxx one is a 4.20 merge window regression and the bnx2fc is a very
  old bug"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  scsi: t10-pi: Return correct ref tag when queue has no integrity profile
  scsi: bnx2fc: Fix NULL dereference in error handling
  Revert "scsi: qla2xxx: Fix NVMe Target discovery"
parents 1a9430db 60a89a3c
...@@ -2364,7 +2364,7 @@ static int _bnx2fc_create(struct net_device *netdev, ...@@ -2364,7 +2364,7 @@ static int _bnx2fc_create(struct net_device *netdev,
if (!interface) { if (!interface) {
printk(KERN_ERR PFX "bnx2fc_interface_create failed\n"); printk(KERN_ERR PFX "bnx2fc_interface_create failed\n");
rc = -ENOMEM; rc = -ENOMEM;
goto ifput_err; goto netdev_err;
} }
if (is_vlan_dev(netdev)) { if (is_vlan_dev(netdev)) {
......
...@@ -4886,10 +4886,10 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e) ...@@ -4886,10 +4886,10 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e)
fcport->d_id = e->u.new_sess.id; fcport->d_id = e->u.new_sess.id;
fcport->flags |= FCF_FABRIC_DEVICE; fcport->flags |= FCF_FABRIC_DEVICE;
fcport->fw_login_state = DSC_LS_PLOGI_PEND; fcport->fw_login_state = DSC_LS_PLOGI_PEND;
if (e->u.new_sess.fc4_type & FS_FC4TYPE_FCP) if (e->u.new_sess.fc4_type == FS_FC4TYPE_FCP)
fcport->fc4_type = FC4_TYPE_FCP_SCSI; fcport->fc4_type = FC4_TYPE_FCP_SCSI;
if (e->u.new_sess.fc4_type & FS_FC4TYPE_NVME) { if (e->u.new_sess.fc4_type == FS_FC4TYPE_NVME) {
fcport->fc4_type = FC4_TYPE_OTHER; fcport->fc4_type = FC4_TYPE_OTHER;
fcport->fc4f_nvme = FC4_TYPE_NVME; fcport->fc4f_nvme = FC4_TYPE_NVME;
} }
......
...@@ -39,12 +39,13 @@ struct t10_pi_tuple { ...@@ -39,12 +39,13 @@ struct t10_pi_tuple {
static inline u32 t10_pi_ref_tag(struct request *rq) static inline u32 t10_pi_ref_tag(struct request *rq)
{ {
unsigned int shift = ilog2(queue_logical_block_size(rq->q));
#ifdef CONFIG_BLK_DEV_INTEGRITY #ifdef CONFIG_BLK_DEV_INTEGRITY
return blk_rq_pos(rq) >> if (rq->q->integrity.interval_exp)
(rq->q->integrity.interval_exp - 9) & 0xffffffff; shift = rq->q->integrity.interval_exp;
#else
return -1U;
#endif #endif
return blk_rq_pos(rq) >> (shift - SECTOR_SHIFT) & 0xffffffff;
} }
extern const struct blk_integrity_profile t10_pi_type1_crc; extern const struct blk_integrity_profile t10_pi_type1_crc;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment