xfs: Check the return value of xfs_buf_get()
authorChandra Seetharaman <sekharan@us.ibm.com>
Wed, 7 Sep 2011 19:37:54 +0000 (19:37 +0000)
committerAlex Elder <aelder@sgi.com>
Wed, 12 Oct 2011 02:15:01 +0000 (21:15 -0500)
Check the return value of xfs_buf_get() and fail appropriately.

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

index 3dd5c9c374cba8b4147b8c5a3ff39d423ac9e7ff..c7dab0c0bdda3d3cd45a2317849c090c8811cbf8 100644 (file)
@@ -2109,8 +2109,8 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)
 
                bp = xfs_buf_get(mp->m_ddev_targp, dblkno, blkcnt,
                                 XBF_LOCK | XBF_DONT_BLOCK);
-               ASSERT(!xfs_buf_geterror(bp));
-
+               if (!bp)
+                       return ENOMEM;
                tmp = (valuelen < XFS_BUF_SIZE(bp)) ? valuelen :
                                                        XFS_BUF_SIZE(bp);
                xfs_buf_iomove(bp, 0, tmp, src, XBRW_WRITE);
index e023f940a3dd345a0a8e9c24cdf9c21b6615ab33..1c6fdeb702ffde9d3ab8b7a4835d55275bbd4926 100644 (file)
@@ -194,6 +194,10 @@ xfs_growfs_data_private(
                bp = xfs_buf_get(mp->m_ddev_targp,
                                 XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)),
                                 XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED);
+               if (!bp) {
+                       error = ENOMEM;
+                       goto error0;
+               }
                agf = XFS_BUF_TO_AGF(bp);
                memset(agf, 0, mp->m_sb.sb_sectsize);
                agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC);
@@ -227,6 +231,10 @@ xfs_growfs_data_private(
                bp = xfs_buf_get(mp->m_ddev_targp,
                                 XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)),
                                 XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED);
+               if (!bp) {
+                       error = ENOMEM;
+                       goto error0;
+               }
                agi = XFS_BUF_TO_AGI(bp);
                memset(agi, 0, mp->m_sb.sb_sectsize);
                agi->agi_magicnum = cpu_to_be32(XFS_AGI_MAGIC);
@@ -253,6 +261,10 @@ xfs_growfs_data_private(
                                 XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)),
                                 BTOBB(mp->m_sb.sb_blocksize),
                                 XBF_LOCK | XBF_MAPPED);
+               if (!bp) {
+                       error = ENOMEM;
+                       goto error0;
+               }
                block = XFS_BUF_TO_BLOCK(bp);
                memset(block, 0, mp->m_sb.sb_blocksize);
                block->bb_magic = cpu_to_be32(XFS_ABTB_MAGIC);
@@ -276,6 +288,10 @@ xfs_growfs_data_private(
                                 XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)),
                                 BTOBB(mp->m_sb.sb_blocksize),
                                 XBF_LOCK | XBF_MAPPED);
+               if (!bp) {
+                       error = ENOMEM;
+                       goto error0;
+               }
                block = XFS_BUF_TO_BLOCK(bp);
                memset(block, 0, mp->m_sb.sb_blocksize);
                block->bb_magic = cpu_to_be32(XFS_ABTC_MAGIC);
@@ -300,6 +316,10 @@ xfs_growfs_data_private(
                                 XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)),
                                 BTOBB(mp->m_sb.sb_blocksize),
                                 XBF_LOCK | XBF_MAPPED);
+               if (!bp) {
+                       error = ENOMEM;
+                       goto error0;
+               }
                block = XFS_BUF_TO_BLOCK(bp);
                memset(block, 0, mp->m_sb.sb_blocksize);
                block->bb_magic = cpu_to_be32(XFS_IBT_MAGIC);