• S
    megaraid_sas : Modify return value of megasas_issue_blocked_cmd() and... · 2be2a988
    Sumit.Saxena@avagotech.com 提交于
    megaraid_sas : Modify return value of megasas_issue_blocked_cmd() and wait_and_poll() to consider command status returned by firmware
    
    This patch is rebased on top of recently sent 18 patches(submitted by me) for
    megaraid_sas driver.
    
    Change the return value of wait_and_poll() and megsas_issue_blocked_cmd()
    based on MFI_STAT returned by firmware for that command. Earlier driver always
    send return type based on command completion (but never check MFI_STAT_OK for
    that command), so even if command is failed by firmware still driver will
    return SUCCESS status from these functions wait_and_poll() and
    megsas_issue_blocked_cmd() and if caller of these functions does not check
    command status (MFI_STAT), then it may endup using invalid data returned in
    DMA buffers(one of the example is megasas_ld_list_query DCMD). Best thing to
    avoid this type of issue is do error handling and set proper return type from
    caller function wait_and_poll() and megsas_issue_blocked_cmd().
    
    The change proposed in this patch will fix the regression introduced in patch-
    "90dc9d98 megaraid_sas : MFI MPT linked list corruption fix" inside function
    megasas_ld_list_query().  Prior to this MFI MPT linked list corruption fix
    patch, megasas_ld_list_query() function used to check DCMD status(returned by
    firmware) but with this linked list corruption fix patch, DCMD status will not
    be checked inside function megasas_ld_list_query() and introduced this issue
    of wrong data being used by function megasas_ld_list_query().
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: NKashyap Desai <kashyap.desai@avagotech.com>
    Signed-off-by: NSumit Saxena <sumit.saxena@avagotech.com>
    Reviewed-by: NTomas Henzl <thenzl@redhat.com>
    Signed-off-by: NJames Bottomley <JBottomley@Odin.com>
    2be2a988
megaraid_sas.h 47.3 KB