• James Bottomley's avatar
    [SCSI] scsi_error: fix target reset handling · c82dc88d
    James Bottomley authored
    There's a target reset bug.
    
    This loop:
    
    	for (id = 0; id <= shost->max_id; id++) {
    
    Never terminates if shost->max_id is set to ~0, like aic94xx does.
    
    It's also pretty inefficient since you mostly have compact target
    numbers, but the max_id can be very high.  The best way would be to
    sort the recovery list by target id and skip them if they're equal,
    but even a worst case O(N^2) traversal is probably OK here, so fix it
    by finding the next highest target number (assuming n+1) and
    terminating when there isn't one.
    
    Cc: Mike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    c82dc88d
scsi_error.c 54.2 KB