• James Bottomley's avatar
    [SCSI] fix async scan add/remove race resulting in an oops · 860dc736
    James Bottomley authored
    Async scanning introduced a very wide window where the SCSI device is
    up and running but has not yet been added to sysfs.  We delay the
    adding until all scans have completed to retain the same ordering as
    sync scanning.
    
    This delay in visibility causes an oops if a device is removed before
    we make it visible because the SCSI removal routines have an inbuilt
    assumption that if a device is in SDEV_RUNNING state, it must be
    visible (which is not necessarily true in the async scanning case).
    
    Fix this by introducing an additional is_visible flag which we can use
    to condition the tear down so we do the right thing for running but
    not yet made visible.
    Reported-by: default avatarAlexey Kuznetsov <kuznet@ms2.inr.ac.ru>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    860dc736
scsi_sysfs.c 26.5 KB