lkml.org 
[lkml]   [2018]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 021/118] qed: Fix reading wrong value in loop condition
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit ed4eac20dcffdad47709422e0cb925981b056668 ]

    The value of "sb_index" is written by the hardware. Reading its value and
    writing it to "index" must finish before checking the loop condition.

    Signed-off-by: Denis Bolotin <denis.bolotin@cavium.com>
    Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/qlogic/qed/qed_int.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/net/ethernet/qlogic/qed/qed_int.c b/drivers/net/ethernet/qlogic/qed/qed_int.c
    index 0f0aba793352..b22f464ea3fa 100644
    --- a/drivers/net/ethernet/qlogic/qed/qed_int.c
    +++ b/drivers/net/ethernet/qlogic/qed/qed_int.c
    @@ -992,6 +992,8 @@ static int qed_int_attentions(struct qed_hwfn *p_hwfn)
    */
    do {
    index = p_sb_attn->sb_index;
    + /* finish reading index before the loop condition */
    + dma_rmb();
    attn_bits = le32_to_cpu(p_sb_attn->atten_bits);
    attn_acks = le32_to_cpu(p_sb_attn->atten_ack);
    } while (index != p_sb_attn->sb_index);
    --
    2.19.1


    \
     
     \ /
      Last update: 2018-12-11 17:06    [W:2.065 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site