Comment # 54 on bug 1044294 from
Hello,

i tested the problem with leap 42.3.
Reproducing is very simple:
- reset interface (echo "1" > /sys/class/fc_host/<host>/issue_lip
or
- shutdown interface

I agree with the analysis of Jia-Ju Bai (see attachment proposed patch),
but i don't agree with the patch itself.
In my opinion with this patch, some lines of code are unprotected in contrast
to the previous version
(eg 
 @@ -2175,11 +2175,14 @@ static void fcoe_ctlr_disc_stop_locked(struct fc_lport
*lport)
 {
     struct fc_rport_priv *rdata;

+restart:
     rcu_read_lock();
     list_for_each_entry_rcu(rdata, &lport->disc.rports, peers) {
         if (kref_get_unless_zero(&rdata->kref)) {
+            rcu_read_unlock();
             fc_rport_logoff(rdata);
             kref_put(&rdata->kref, fc_rport_destroy);
+            goto restart;
         }
     }
     rcu_read_unlock();

             fc_rport_logoff(rdata);
             kref_put(&rdata->kref, fc_rport_destroy);
are unprotected)

My proposed solution is: Discard the change of Sep 30, 2016, use 
 mutex_lock(&lport->disc.disc_mutex); etc

I perform simple tests, works.
Holger will perform tests in a heavy load environment.


You are receiving this mail because: