http://bugzilla.suse.com/show_bug.cgi?id=1044294
http://bugzilla.suse.com/show_bug.cgi?id=1044294#c54
--- Comment #54 from Ralf Müller ---
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:
You are on the CC list for the bug.