libfc: Fix a race in fc_exch_timer_set_locked()
authorBart Van Assche <bvanassche@acm.org>
Wed, 14 Aug 2013 15:35:29 +0000 (15:35 +0000)
committerRobert Love <robert.w.love@intel.com>
Wed, 4 Sep 2013 20:16:25 +0000 (13:16 -0700)
commitb86788658be425a5454246a954721d9122d2b3d6
treec8faadee82cd2149e3af75996b51d4db90072724
parent8d08023687e2515f2a48235aed80b6982025cd09
libfc: Fix a race in fc_exch_timer_set_locked()

It is allowed to pass a zero timeout value to fc_seq_exch_abort().
Avoid that this can cause the timeout function to drop the exchange
reference before it has been increased by fc_exch_timer_set_locked().
This patch fixes a crash when running FCoE target code with poisoning
enabled in the memory allocator.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Cc: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
drivers/scsi/libfc/fc_exch.c