aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bitmap.c
diff options
context:
space:
mode:
authorRoland Dreier <[email protected]>2008-09-25 22:26:15 +0000
committerRoland Dreier <[email protected]>2008-09-25 22:26:15 +0000
commitc9da4bad5b80c3d9884e2c6ad8d2091252c32d5e (patch)
tree6b954f1ae170ffbbe522e38e3e69f44fc92f3689 /lib/bitmap.c
parentMerge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 (diff)
downloadkernel-c9da4bad5b80c3d9884e2c6ad8d2091252c32d5e.tar.gz
kernel-c9da4bad5b80c3d9884e2c6ad8d2091252c32d5e.zip
IPoIB: Fix crash when path record fails after path flush
Commit ee1e2c82 ("IPoIB: Refresh paths instead of flushing them on SM change events") changed how paths are flushed on an SM event. This change introduces a problem if the path record query triggered by fails, causing path->ah to become NULL. A later successful path query will then trigger WARN_ON() in path_rec_completion(), and crash because path->ah has already been freed, so the ipoib_put_ah() inside the lock in path_rec_completion() may actually drop the last reference (contrary to the comment that claims this is safe). Fix this by updating path->ah and freeing old_ah only when the path record query is successful. This prevents the neighbour AH and that path AH from getting out of sync. This fixes <https://bugs.openfabrics.org/show_bug.cgi?id=1194> Reported-by: Rabah Salem <[email protected]> Debugged-by: Eli Cohen <[email protected]> Signed-off-by: Roland Dreier <[email protected]>
Diffstat (limited to 'lib/bitmap.c')
0 files changed, 0 insertions, 0 deletions