summaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2008-09-26 00:28:08 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2008-09-26 01:37:03 +0200
commit6ef190cc92e33565accff6a320f0e7d90480bfe7 (patch)
treeb898c20fa9baba3a10ba03b5a64911bd3c8416f1 /drivers/ata
parentMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 (diff)
downloadlinux-6ef190cc92e33565accff6a320f0e7d90480bfe7.tar.xz
linux-6ef190cc92e33565accff6a320f0e7d90480bfe7.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 <ravah@mellanox.com> Debugged-by: Eli Cohen <eli@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/ata')
0 files changed, 0 insertions, 0 deletions