Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending

Pull target fixes from Nicholas Bellinger:
"Two minor target fixes. There is really nothing exciting and/or
controversial this time around.

There's one fix from MDR for a RCU debug warning message within tcm_fc
code (CC'ed to stable), and a small AC fix for qla_target.c based upon
a recent Coverity static report.

Also, there is one other outstanding virtio-scsi LUN scanning bugfix
that has been uncovered with the in-flight tcm_vhost driver over the
last days, and that needs to make it into 3.5 final too. This patch
has been posted to linux-scsi again here:

http://marc.info/?l=linux-scsi&m=134160609212542&w=2

and I've asked James to include it in his next PULL request."

* git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
qla2xxx: print the right array elements in qlt_async_event
tcm_fc: Resolve suspicious RCU usage warnings

+20 -18
+18 -17
drivers/scsi/qla2xxx/qla_target.c
··· 3960 3960 { 3961 3961 struct qla_hw_data *ha = vha->hw; 3962 3962 struct qla_tgt *tgt = ha->tgt.qla_tgt; 3963 - int reason_code; 3963 + int login_code; 3964 3964 3965 3965 ql_dbg(ql_dbg_tgt, vha, 0xe039, 3966 3966 "scsi(%ld): ha state %d init_done %d oper_mode %d topo %d\n", ··· 4003 4003 { 4004 4004 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03b, 4005 4005 "qla_target(%d): Async LOOP_UP occured " 4006 - "(m[1]=%x, m[2]=%x, m[3]=%x, m[4]=%x)", vha->vp_idx, 4007 - le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]), 4008 - le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4])); 4006 + "(m[0]=%x, m[1]=%x, m[2]=%x, m[3]=%x)", vha->vp_idx, 4007 + le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]), 4008 + le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3])); 4009 4009 if (tgt->link_reinit_iocb_pending) { 4010 4010 qlt_send_notify_ack(vha, (void *)&tgt->link_reinit_iocb, 4011 4011 0, 0, 0, 0, 0, 0); ··· 4020 4020 case MBA_RSCN_UPDATE: 4021 4021 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03c, 4022 4022 "qla_target(%d): Async event %#x occured " 4023 - "(m[1]=%x, m[2]=%x, m[3]=%x, m[4]=%x)", vha->vp_idx, code, 4024 - le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]), 4025 - le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4])); 4023 + "(m[0]=%x, m[1]=%x, m[2]=%x, m[3]=%x)", vha->vp_idx, code, 4024 + le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]), 4025 + le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3])); 4026 4026 break; 4027 4027 4028 4028 case MBA_PORT_UPDATE: 4029 4029 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03d, 4030 4030 "qla_target(%d): Port update async event %#x " 4031 - "occured: updating the ports database (m[1]=%x, m[2]=%x, " 4032 - "m[3]=%x, m[4]=%x)", vha->vp_idx, code, 4033 - le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]), 4034 - le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4])); 4035 - reason_code = le16_to_cpu(mailbox[2]); 4036 - if (reason_code == 0x4) 4031 + "occured: updating the ports database (m[0]=%x, m[1]=%x, " 4032 + "m[2]=%x, m[3]=%x)", vha->vp_idx, code, 4033 + le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]), 4034 + le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3])); 4035 + 4036 + login_code = le16_to_cpu(mailbox[2]); 4037 + if (login_code == 0x4) 4037 4038 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03e, 4038 4039 "Async MB 2: Got PLOGI Complete\n"); 4039 - else if (reason_code == 0x7) 4040 + else if (login_code == 0x7) 4040 4041 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf03f, 4041 4042 "Async MB 2: Port Logged Out\n"); 4042 4043 break; ··· 4045 4044 default: 4046 4045 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf040, 4047 4046 "qla_target(%d): Async event %#x occured: " 4048 - "ignore (m[1]=%x, m[2]=%x, m[3]=%x, m[4]=%x)", vha->vp_idx, 4049 - code, le16_to_cpu(mailbox[1]), le16_to_cpu(mailbox[2]), 4050 - le16_to_cpu(mailbox[3]), le16_to_cpu(mailbox[4])); 4047 + "ignore (m[0]=%x, m[1]=%x, m[2]=%x, m[3]=%x)", vha->vp_idx, 4048 + code, le16_to_cpu(mailbox[0]), le16_to_cpu(mailbox[1]), 4049 + le16_to_cpu(mailbox[2]), le16_to_cpu(mailbox[3])); 4051 4050 break; 4052 4051 } 4053 4052
+2 -1
drivers/target/tcm_fc/tfc_sess.c
··· 58 58 struct ft_tport *tport; 59 59 int i; 60 60 61 - tport = rcu_dereference(lport->prov[FC_TYPE_FCP]); 61 + tport = rcu_dereference_protected(lport->prov[FC_TYPE_FCP], 62 + lockdep_is_held(&ft_lport_lock)); 62 63 if (tport && tport->tpg) 63 64 return tport; 64 65