[SCSI] st: fix race in st_scsi_execute_end
[SCSI] st: fix race in st_scsi_execute_end

The call to complete() in st_scsi_execute_end() wakes up sleeping thread
in write_behind_check(), which frees the st_request, thus invalidating
the pointer to the associated bio structure, which is then passed to the
blk_rq_unmap_user(). Fix by storing pointer to bio structure into
temporary local variable.

This bug is present since at least linux-2.6.32.

CC: 4fbacc2fa0ffdbb11bf1ad6925b886ebd08dd15f@kernel.org
Signed-off-by: Petr Uzel <a0b7a7a63adfd271ad8c20f5254d4d6800a5233d@suse.cz>
Reported-by: Juergen Groß <cc3c6ba9cccd97e6e218c21c9a56b2dd8c9f2016@ts.fujitsu.com>
Reviewed-by: Jan Kara <596727c8a0ea4db3ba2ceceedccbacd3d7b371b8@suse.cz>
Acked-by: Kai Mäkisara <ea81609730caacddbf5ac61e67a7f636808ad2c5@kolumbus.fi>
Signed-off-by: James Bottomley <1acebbdca565c7b6b638bdc23b58b5610d1a56b8@Parallels.com>

KristFoundation/Programs,TeamVee-Kanas/android_kernel_samsung_kanas,KristFoundation/Programs,KristFoundation/Programs,TeamVee-Kanas/android_kernel_samsung_kanas,TeamVee-Kanas/android_kernel_samsung_kanas,KristFoundation/Programs,TeamVee-Kanas/android_kernel_samsung_kanas,KristFoundation/Programs,TeamVee-Kanas/android_kernel_samsung_kanas,KristFoundation/Programs