Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
libnvdimm: fix mishandled nvdimm_clear_poison() return value
Colin, via static analysis, reports that the length could be negative from nvdimm_clear_poison() in the error case. There was a similar problem with commit 0a3f27b "libnvdimm, namespace: avoid multiple sector calculations" that I noticed when merging the for-4.10/libnvdimm topic branch into libnvdimm-for-next, but I missed this one. Fix both of them to the following procedure: * if we clear a block's worth of media, clear that many blocks in badblocks * if we clear less than the requested size of the transfer return an error * always invalidate cache after any non-error / non-zero nvdimm_clear_poison result Fixes: 82bf103 ("libnvdimm: check and clear poison before writing to pmem") Fixes: 0a3f27b ("libnvdimm, namespace: avoid multiple sector calculations") Cc: Fabian Frederick <[email protected]> Cc: Dave Jiang <[email protected]> Reported-by: Colin Ian King <[email protected]> Signed-off-by: Dan Williams <[email protected]>
- Loading branch information