UBUNTU: SAUCE: (no-up) virtio-scsi: Fix race in target free
BugLink: http://bugs.launchpad.net/bugs/1765241 A race condition exists in virtio_scsi between the completion of a request and the freeing of the target structure. The race is between (a) virtscsi_complete_cmd that, first, wakes up a task waiting for a completion, then, second, releases a reference in the target structure and (b) the woken up task freeing that target structure. The race appears to exist in all verisons of virtio_scsi, but most kernels are not impacted due to a coincidental RCU sync in the "(b)" path above that will effectively wait for the "(a)" path to complete. The Ubuntu Xenial 4.4 kernel since commit be2a2080 lacks any RCU sync in the "(b)" code path, thus opening the race window. The fix is to wait for any outstanding requests to release their references prior to freeing the target structure. Signed-off-by: Jay Vosburgh <jay.vosburgh@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Showing
Please register or sign in to comment