lkml.org 
[lkml]   [2018]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 67/74] r8169: fix memory corruption on retrieval of hardware statistics.
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

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

    From: Francois Romieu <romieu@fr.zoreil.com>


    [ Upstream commit a78e93661c5fd30b9e1dee464b2f62f966883ef7 ]

    Hardware statistics retrieval hurts in tight invocation loops.

    Avoid extraneous write and enforce strict ordering of writes targeted to
    the tally counters dump area address registers.

    Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
    Tested-by: Oliver Freyermuth <o.freyermuth@googlemail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/realtek/r8169.c | 9 ++-------
    1 file changed, 2 insertions(+), 7 deletions(-)

    --- a/drivers/net/ethernet/realtek/r8169.c
    +++ b/drivers/net/ethernet/realtek/r8169.c
    @@ -2205,19 +2205,14 @@ static bool rtl8169_do_counters(struct n
    void __iomem *ioaddr = tp->mmio_addr;
    dma_addr_t paddr = tp->counters_phys_addr;
    u32 cmd;
    - bool ret;

    RTL_W32(CounterAddrHigh, (u64)paddr >> 32);
    + RTL_R32(CounterAddrHigh);
    cmd = (u64)paddr & DMA_BIT_MASK(32);
    RTL_W32(CounterAddrLow, cmd);
    RTL_W32(CounterAddrLow, cmd | counter_cmd);

    - ret = rtl_udelay_loop_wait_low(tp, &rtl_counters_cond, 10, 1000);
    -
    - RTL_W32(CounterAddrLow, 0);
    - RTL_W32(CounterAddrHigh, 0);
    -
    - return ret;
    + return rtl_udelay_loop_wait_low(tp, &rtl_counters_cond, 10, 1000);
    }

    static bool rtl8169_reset_counters(struct net_device *dev)

    \
     
     \ /
      Last update: 2018-01-29 22:00    [W:4.049 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site