mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-04 00:06:36 +00:00
ibmvnic: set ltb->buff to NULL after freeing
free_long_term_buff() checks ltb->buff to decide whether we have a long
term buffer to free. So set ltb->buff to NULL afer freeing. While here,
also clear ->map_id, fix up some coding style and log an error.
Fixes: 9c4eaabd1b
("Check CRQ command return codes")
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
72368f8b2b
commit
552a33729f
1 changed files with 15 additions and 11 deletions
|
@ -211,12 +211,11 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
|
|||
mutex_lock(&adapter->fw_lock);
|
||||
adapter->fw_done_rc = 0;
|
||||
reinit_completion(&adapter->fw_done);
|
||||
rc = send_request_map(adapter, ltb->addr,
|
||||
ltb->size, ltb->map_id);
|
||||
|
||||
rc = send_request_map(adapter, ltb->addr, ltb->size, ltb->map_id);
|
||||
if (rc) {
|
||||
dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
|
||||
mutex_unlock(&adapter->fw_lock);
|
||||
return rc;
|
||||
dev_err(dev, "send_request_map failed, rc = %d\n", rc);
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = ibmvnic_wait_for_completion(adapter, &adapter->fw_done, 10000);
|
||||
|
@ -224,20 +223,23 @@ static int alloc_long_term_buff(struct ibmvnic_adapter *adapter,
|
|||
dev_err(dev,
|
||||
"Long term map request aborted or timed out,rc = %d\n",
|
||||
rc);
|
||||
dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
|
||||
mutex_unlock(&adapter->fw_lock);
|
||||
return rc;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (adapter->fw_done_rc) {
|
||||
dev_err(dev, "Couldn't map long term buffer,rc = %d\n",
|
||||
adapter->fw_done_rc);
|
||||
rc = -1;
|
||||
goto out;
|
||||
}
|
||||
rc = 0;
|
||||
out:
|
||||
if (rc) {
|
||||
dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
|
||||
mutex_unlock(&adapter->fw_lock);
|
||||
return -1;
|
||||
ltb->buff = NULL;
|
||||
}
|
||||
mutex_unlock(&adapter->fw_lock);
|
||||
return 0;
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void free_long_term_buff(struct ibmvnic_adapter *adapter,
|
||||
|
@ -257,6 +259,8 @@ static void free_long_term_buff(struct ibmvnic_adapter *adapter,
|
|||
adapter->reset_reason != VNIC_RESET_TIMEOUT)
|
||||
send_request_unmap(adapter, ltb->map_id);
|
||||
dma_free_coherent(dev, ltb->size, ltb->buff, ltb->addr);
|
||||
ltb->buff = NULL;
|
||||
ltb->map_id = 0;
|
||||
}
|
||||
|
||||
static int reset_long_term_buff(struct ibmvnic_adapter *adapter,
|
||||
|
|
Loading…
Add table
Reference in a new issue