Comment 7 for bug 1552544

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/18216
Committed: http://github.org/Juniper/contrail-vrouter/commit/53fb29020fcaabe4b3b9512e60a9edf1a8e67101
Submitter: Zuul
Branch: R2.22.x

commit 53fb29020fcaabe4b3b9512e60a9edf1a8e67101
Author: Divakar <email address hidden>
Date: Thu Mar 3 11:02:13 2016 +0530

Modify hentry flags before adding to free list

Currently when a flow entry is deleted, the corresponding hash entry is
kept at the head of the free list and after successfully inserting into
the list the entry's flags are reset. If any other core is
attempting to fetch a free entry, there is a likely chance that just
added entry will be given as free entry before the flags are reset as
this entry is at the head of the list. Because of this there is a race
condition for setting the flags between deletion of entry and additin of
entry. If deletion overwrites the addition flags, the Valid flags gets
overwritten. Because of this the entry would not be in free list but
still would not be considered a valid entry. Searching this entry by
index fails as this is not a valid entry.

As a fix, the flags while inserting the entry to free list are modified
before inserting so that there would not be any race condition.

Change-Id: Ia9334d313d2d444279704e84c5193de80ca7f238
closes-bug: #1552544