lkml.org 
[lkml]   [2018]   [Jul]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.17 056/101] Revert "s390/qeth: use Read device to query hypervisor for MAC"
    Date
    4.17-stable review patch.  If anyone has any objections, please let me know.

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

    From: Julian Wiedmann <jwi@linux.ibm.com>

    [ Upstream commit 4664610537d398d55be19432f9cd9c29c831e159 ]

    This reverts commit b7493e91c11a757cf0f8ab26989642ee4bb2c642.

    On its own, querying RDEV for a MAC address works fine. But when upgrading
    from a qeth that previously queried DDEV on a z/VM NIC (ie. any kernel with
    commit ec61bd2fd2a2), the RDEV query now returns a _different_ MAC address
    than the DDEV query.

    If the NIC is configured with MACPROTECT, z/VM apparently requires us to
    use the MAC that was initially returned (on DDEV) and registered. So after
    upgrading to a kernel that uses RDEV, the SETVMAC registration cmd for the
    new MAC address fails and we end up with a non-operabel interface.

    To avoid regressions on upgrade, switch back to using DDEV for the MAC
    address query. The downgrade path (first RDEV, later DDEV) is fine, in this
    case both queries return the same MAC address.

    Fixes: b7493e91c11a ("s390/qeth: use Read device to query hypervisor for MAC")
    Reported-by: Michal Kubecek <mkubecek@suse.com>
    Tested-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: Julian Wiedmann <jwi@linux.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_main.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/s390/net/qeth_core_main.c
    +++ b/drivers/s390/net/qeth_core_main.c
    @@ -4845,7 +4845,7 @@ int qeth_vm_request_mac(struct qeth_card
    goto out;
    }

    - ccw_device_get_id(CARD_RDEV(card), &id);
    + ccw_device_get_id(CARD_DDEV(card), &id);
    request->resp_buf_len = sizeof(*response);
    request->resp_version = DIAG26C_VERSION2;
    request->op_code = DIAG26C_GET_MAC;

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