ibmvnic: Fix endian error when requesting device capabilities
authorThomas Falcon <tlfalcon@linux.vnet.ibm.com>
Wed, 15 Feb 2017 16:32:11 +0000 (10:32 -0600)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Feb 2017 19:48:31 +0000 (14:48 -0500)
When a vNIC client driver requests a faulty device setting, the
server returns an acceptable value for the client to request.
This 64 bit value was incorrectly being swapped as a 32 bit value,
resulting in loss of data. This patch corrects that by using
the 64 bit swap function.

Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ibm/ibmvnic.c

index 5b66b4fd1767a149ee99a8ca029e3cd38f440ac7..158b49a0a1d6c5992e45e8876649296f72f45544 100644 (file)
@@ -2389,10 +2389,10 @@ static void handle_request_cap_rsp(union ibmvnic_crq *crq,
        case PARTIALSUCCESS:
                dev_info(dev, "req=%lld, rsp=%ld in %s queue, retrying.\n",
                         *req_value,
-                        (long int)be32_to_cpu(crq->request_capability_rsp.
+                        (long int)be64_to_cpu(crq->request_capability_rsp.
                                               number), name);
                release_sub_crqs_no_irqs(adapter);
-               *req_value = be32_to_cpu(crq->request_capability_rsp.number);
+               *req_value = be64_to_cpu(crq->request_capability_rsp.number);
                init_sub_crqs(adapter, 1);
                return;
        default: