mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
IB/ipath: Minor fix to ordering of freeing and zeroing of tid pages.
Fixed to be the same as everywhere else. copy and then zero the page * in the array first, and then pass the copy to the VM routines. Signed-off-by: Dave Olson <dave.olson@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
bda94e32b3
commit
3ac8c70f74
@ -538,6 +538,9 @@ static int ipath_tid_free(struct ipath_portdata *pd, unsigned subport,
|
|||||||
continue;
|
continue;
|
||||||
cnt++;
|
cnt++;
|
||||||
if (dd->ipath_pageshadow[porttid + tid]) {
|
if (dd->ipath_pageshadow[porttid + tid]) {
|
||||||
|
struct page *p;
|
||||||
|
p = dd->ipath_pageshadow[porttid + tid];
|
||||||
|
dd->ipath_pageshadow[porttid + tid] = NULL;
|
||||||
ipath_cdbg(VERBOSE, "PID %u freeing TID %u\n",
|
ipath_cdbg(VERBOSE, "PID %u freeing TID %u\n",
|
||||||
pd->port_pid, tid);
|
pd->port_pid, tid);
|
||||||
dd->ipath_f_put_tid(dd, &tidbase[tid],
|
dd->ipath_f_put_tid(dd, &tidbase[tid],
|
||||||
@ -546,9 +549,7 @@ static int ipath_tid_free(struct ipath_portdata *pd, unsigned subport,
|
|||||||
pci_unmap_page(dd->pcidev,
|
pci_unmap_page(dd->pcidev,
|
||||||
dd->ipath_physshadow[porttid + tid],
|
dd->ipath_physshadow[porttid + tid],
|
||||||
PAGE_SIZE, PCI_DMA_FROMDEVICE);
|
PAGE_SIZE, PCI_DMA_FROMDEVICE);
|
||||||
ipath_release_user_pages(
|
ipath_release_user_pages(&p, 1);
|
||||||
&dd->ipath_pageshadow[porttid + tid], 1);
|
|
||||||
dd->ipath_pageshadow[porttid + tid] = NULL;
|
|
||||||
ipath_stats.sps_pageunlocks++;
|
ipath_stats.sps_pageunlocks++;
|
||||||
} else
|
} else
|
||||||
ipath_dbg("Unused tid %u, ignoring\n", tid);
|
ipath_dbg("Unused tid %u, ignoring\n", tid);
|
||||||
|
Loading…
Reference in New Issue
Block a user