From f7322cc847072cc0bdd50f45439513576a278224 Mon Sep 17 00:00:00 2001 From: Michael Chan Date: Wed, 24 Feb 2010 14:42:06 +0000 Subject: [PATCH] --- yaml --- r: 184512 b: refs/heads/master c: d02a5e6c2fba8b114c44cf05085fca07180f37f1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/cnic.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index de3d6a7dfa4c..ceb76520117d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 66883e90eaa0dd55d395c0f9a0c6da5d50809804 +refs/heads/master: d02a5e6c2fba8b114c44cf05085fca07180f37f1 diff --git a/trunk/drivers/net/cnic.c b/trunk/drivers/net/cnic.c index 40865aac2afa..45584442a35c 100644 --- a/trunk/drivers/net/cnic.c +++ b/trunk/drivers/net/cnic.c @@ -327,6 +327,12 @@ static int cnic_iscsi_nl_msg_recv(struct cnic_dev *dev, u32 msg_type, if (l5_cid >= MAX_CM_SK_TBL_SZ) break; + rcu_read_lock(); + if (!rcu_dereference(cp->ulp_ops[CNIC_ULP_L4])) { + rc = -ENODEV; + rcu_read_unlock(); + break; + } csk = &cp->csk_tbl[l5_cid]; csk_hold(csk); if (cnic_in_use(csk)) { @@ -341,6 +347,7 @@ static int cnic_iscsi_nl_msg_recv(struct cnic_dev *dev, u32 msg_type, cnic_cm_set_pg(csk); } csk_put(csk); + rcu_read_unlock(); rc = 0; } }