lkml.org 
[lkml]   [2018]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 075/110] s390/qeth: fix underestimated count of buffer elements
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Ursula Braun <ubraun@linux.vnet.ibm.com>


    [ Upstream commit 89271c65edd599207dd982007900506283c90ae3 ]

    For a memory range/skb where the last byte falls onto a page boundary
    (ie. 'end' is of the form xxx...xxx001), the PFN_UP() part of the
    calculation currently doesn't round up to the next PFN due to an
    off-by-one error.
    Thus qeth believes that the skb occupies one page less than it
    actually does, and may select a IO buffer that doesn't have enough spare
    buffer elements to fit all of the skb's data.
    HW detects this as a malformed buffer descriptor, and raises an
    exception which then triggers device recovery.

    Fixes: 2863c61334aa ("qeth: refactor calculation of SBALE count")
    Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/s390/net/qeth_core.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/s390/net/qeth_core.h
    +++ b/drivers/s390/net/qeth_core.h
    @@ -834,7 +834,7 @@ struct qeth_trap_id {
    */
    static inline int qeth_get_elements_for_range(addr_t start, addr_t end)
    {
    - return PFN_UP(end - 1) - PFN_DOWN(start);
    + return PFN_UP(end) - PFN_DOWN(start);
    }

    static inline int qeth_get_micros(void)

    \
     
     \ /
      Last update: 2018-03-07 20:47    [W:4.042 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site