[SCSI] bnx2i: Added mutex lock protection to conn_get_param
authorEddie Wai <eddie.wai@broadcom.com>
Tue, 23 Nov 2010 23:29:26 +0000 (15:29 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 21 Dec 2010 18:24:13 +0000 (12:24 -0600)
Added net_dev mutex lock protection before accessing the csk
parameters.

Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Reviewed-by: Benjamin Li <benli@broadcom.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/bnx2i/bnx2i_iscsi.c

index a2c9b1f2ea5cb052adb8a91195ba1971b977d58a..07dd4f9036f0e6ab8b9956b680aaba44532696b1 100644 (file)
@@ -1461,21 +1461,28 @@ static int bnx2i_conn_get_param(struct iscsi_cls_conn *cls_conn,
        struct bnx2i_conn *bnx2i_conn = conn->dd_data;
        int len = 0;
 
+       if (!(bnx2i_conn && bnx2i_conn->ep && bnx2i_conn->ep->hba))
+               goto out;
+
        switch (param) {
        case ISCSI_PARAM_CONN_PORT:
-               if (bnx2i_conn->ep)
+               mutex_lock(&bnx2i_conn->ep->hba->net_dev_lock);
+               if (bnx2i_conn->ep->cm_sk)
                        len = sprintf(buf, "%hu\n",
                                      bnx2i_conn->ep->cm_sk->dst_port);
+               mutex_unlock(&bnx2i_conn->ep->hba->net_dev_lock);
                break;
        case ISCSI_PARAM_CONN_ADDRESS:
-               if (bnx2i_conn->ep)
+               mutex_lock(&bnx2i_conn->ep->hba->net_dev_lock);
+               if (bnx2i_conn->ep->cm_sk)
                        len = sprintf(buf, "%pI4\n",
                                      &bnx2i_conn->ep->cm_sk->dst_ip);
+               mutex_unlock(&bnx2i_conn->ep->hba->net_dev_lock);
                break;
        default:
                return iscsi_conn_get_param(cls_conn, param, buf);
        }
-
+out:
        return len;
 }