qcacmn: Untrack nbuf map on map failure

Currently, nbuf map tracking happens before the nbuf is actually mapped.
In cases where the actual map operation fails, remove the nbuf map
tracking information to avoid false positive mapped-never-unmapped
panics.

Change-Id: I8e649841a661d460bf89dd5edf09bb5e460ea98c
CRs-Fixed: 2171837
This commit is contained in:
Dustin Brown 2018-01-12 16:56:06 -08:00 • committed by snandini
commit dbc7ec1702

View file

@ -658,7 +658,11 @@ QDF_STATUS qdf_nbuf_map_debug(qdf_device_t osdev,
if (QDF_IS_STATUS_ERROR(status))
return status;
return __qdf_nbuf_map(osdev, buf, dir);
status = __qdf_nbuf_map(osdev, buf, dir);
if (QDF_IS_STATUS_ERROR(status))
qdf_nbuf_untrack_map(buf, file, line);
return status;
}
void qdf_nbuf_unmap_debug(qdf_device_t osdev,
@ -683,7 +687,11 @@ QDF_STATUS qdf_nbuf_map_single_debug(qdf_device_t osdev,
if (QDF_IS_STATUS_ERROR(status))
return status;
return __qdf_nbuf_map_single(osdev, buf, dir);
status = __qdf_nbuf_map_single(osdev, buf, dir);
if (QDF_IS_STATUS_ERROR(status))
qdf_nbuf_untrack_map(buf, file, line);
return status;
}
void qdf_nbuf_unmap_single_debug(qdf_device_t osdev,
@ -709,7 +717,11 @@ QDF_STATUS qdf_nbuf_map_nbytes_debug(qdf_device_t osdev,
if (QDF_IS_STATUS_ERROR(status))
return status;
return __qdf_nbuf_map_nbytes(osdev, buf, dir, nbytes);
status = __qdf_nbuf_map_nbytes(osdev, buf, dir, nbytes);
if (QDF_IS_STATUS_ERROR(status))
qdf_nbuf_untrack_map(buf, file, line);
return status;
}
void qdf_nbuf_unmap_nbytes_debug(qdf_device_t osdev,
@ -736,7 +748,11 @@ QDF_STATUS qdf_nbuf_map_nbytes_single_debug(qdf_device_t osdev,
if (QDF_IS_STATUS_ERROR(status))
return status;
return __qdf_nbuf_map_nbytes_single(osdev, buf, dir, nbytes);
status = __qdf_nbuf_map_nbytes_single(osdev, buf, dir, nbytes);
if (QDF_IS_STATUS_ERROR(status))
qdf_nbuf_untrack_map(buf, file, line);
return status;
}
void qdf_nbuf_unmap_nbytes_single_debug(qdf_device_t osdev,