xfs: xfs_trans_read_buf() should return an error on failure
When inside a transaction and we fail to read a buffer, xfs_trans_read_buf returns a null buffer pointer and no error. xfs_do_da_buf() checks the error return, but not the buffer, and as a result this read failure condition causes a panic when it attempts to dereference the non-existant buffer. Make xfs_trans_read_buf() return the same error for this situation regardless of whether it is in a transaction or not. This means every caller does not need to check both the error return and the buffer before proceeding to use the buffer. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
parent
1bfd8d0419
commit
7401aafd50
|
@ -383,7 +383,8 @@ xfs_trans_read_buf(
|
|||
bp = xfs_buf_read(target, blkno, len, flags | XBF_DONT_BLOCK);
|
||||
if (bp == NULL) {
|
||||
*bpp = NULL;
|
||||
return 0;
|
||||
return (flags & XBF_TRYLOCK) ?
|
||||
0 : XFS_ERROR(ENOMEM);
|
||||
}
|
||||
if (XFS_BUF_GETERROR(bp) != 0) {
|
||||
XFS_BUF_SUPER_STALE(bp);
|
||||
|
|
Loading…
Reference in New Issue