xfs: Check the return value of xfs_buf_read() for NULL
authorChandra Seetharaman <sekharan@us.ibm.com>
Wed, 3 Aug 2011 02:18:29 +0000 (02:18 +0000)
committerAlex Elder <aelder@sgi.com>
Fri, 12 Aug 2011 18:39:29 +0000 (13:39 -0500)
Check the return value of xfs_buf_read() for NULL and return ENOMEM
if it is NULL.  This is necessary in a few spots to avoid subsequent
code blindly dereferencing the null buffer pointer.

Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
fs/xfs/xfs_log_recover.c
fs/xfs/xfs_vnodeops.c

index 1076b7effcdc6364b4a78829e804ea050d96db21..b9afff8a1be2c1f72198a0e9dee412ad06b0133d 100644 (file)
@@ -2131,6 +2131,8 @@ xlog_recover_buffer_pass2(
 
        bp = xfs_buf_read(mp->m_ddev_targp, buf_f->blf_blkno, buf_f->blf_len,
                          buf_flags);
+       if (!bp)
+               return XFS_ERROR(ENOMEM);
        error = xfs_buf_geterror(bp);
        if (error) {
                xfs_ioerror_alert("xlog_recover_do..(read#1)", mp,
@@ -2222,6 +2224,10 @@ xlog_recover_inode_pass2(
 
        bp = xfs_buf_read(mp->m_ddev_targp, in_f->ilf_blkno, in_f->ilf_len,
                          XBF_LOCK);
+       if (!bp) {
+               error = ENOMEM;
+               goto error;
+       }
        error = xfs_buf_geterror(bp);
        if (error) {
                xfs_ioerror_alert("xlog_recover_do..(read#2)", mp,
index dd05360ad56fb9337d77c749ba9b737015dc7ccf..2a432d00d4c1b4f6b459ac9fad6e18caba9be26d 100644 (file)
@@ -83,6 +83,8 @@ xfs_readlink_bmap(
 
                bp = xfs_buf_read(mp->m_ddev_targp, d, BTOBB(byte_cnt),
                                  XBF_LOCK | XBF_MAPPED | XBF_DONT_BLOCK);
+               if (!bp)
+                       return XFS_ERROR(ENOMEM);
                error = xfs_buf_geterror(bp);
                if (error) {
                        xfs_ioerror_alert("xfs_readlink",