Commit 0dfa0bed authored by Michael Chan's avatar Michael Chan Committed by David S. Miller
Browse files

cnic: Explicitly initialize all reference counts to 0.



The driver is relying on zero'ed allocated memory and does not
explicitly call atomic_set() to initialize the ref counts to 0.  Add
these atomic_set() calls so that it will be more straight forward
to convert atomic ref counts to refcount_t.

Reported-by: default avatarChuhong Yuan <hslester96@gmail.com>
Cc: Rasesh Mody <rmody@marvell.com>
Cc: <GR-Linux-NIC-Dev@marvell.com>
Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 43a4b60d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -4096,12 +4096,16 @@ static int cnic_cm_alloc_mem(struct cnic_dev *dev)
{
	struct cnic_local *cp = dev->cnic_priv;
	u32 port_id;
	int i;

	cp->csk_tbl = kvcalloc(MAX_CM_SK_TBL_SZ, sizeof(struct cnic_sock),
			       GFP_KERNEL);
	if (!cp->csk_tbl)
		return -ENOMEM;

	for (i = 0; i < MAX_CM_SK_TBL_SZ; i++)
		atomic_set(&cp->csk_tbl[i].ref_count, 0);

	port_id = prandom_u32();
	port_id %= CNIC_LOCAL_PORT_RANGE;
	if (cnic_init_id_tbl(&cp->csk_port_tbl, CNIC_LOCAL_PORT_RANGE,
@@ -5480,6 +5484,7 @@ static struct cnic_dev *cnic_alloc_dev(struct net_device *dev,
	cdev->unregister_device = cnic_unregister_device;
	cdev->iscsi_nl_msg_recv = cnic_iscsi_nl_msg_recv;
	cdev->get_fc_npiv_tbl = cnic_get_fc_npiv_tbl;
	atomic_set(&cdev->ref_count, 0);

	cp = cdev->cnic_priv;
	cp->dev = cdev;