xfs
[Top] [All Lists]

[PATCH 007/102] xfs: Check the return value of xfs_buf_get()

To: xfs@xxxxxxxxxxx
Subject: [PATCH 007/102] xfs: Check the return value of xfs_buf_get()
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Thu, 23 Aug 2012 15:01:25 +1000
In-reply-to: <1345698180-13612-1-git-send-email-david@xxxxxxxxxxxxx>
References: <1345698180-13612-1-git-send-email-david@xxxxxxxxxxxxx>
From: Chandra Seetharaman <sekharan@xxxxxxxxxx>

Upstream commit: b522950f0ab8551f2ef56c210ebd50e6c6396601

Check the return value of xfs_buf_get() and fail appropriately.

Signed-off-by: Chandra Seetharaman <sekharan@xxxxxxxxxx>
Signed-off-by: Alex Elder <aelder@xxxxxxx>
---
 fs/xfs/xfs_attr.c  |    4 ++--
 fs/xfs/xfs_fsops.c |   20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c
index 99d4011..fe01931 100644
--- a/fs/xfs/xfs_attr.c
+++ b/fs/xfs/xfs_attr.c
@@ -2110,8 +2110,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(bp);
-               ASSERT(!XFS_BUF_GETERROR(bp));
+               if (!bp)
+                       return ENOMEM;
 
                tmp = (valuelen < XFS_BUF_SIZE(bp)) ? valuelen :
                                                        XFS_BUF_SIZE(bp);
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c
index 9153d2c..ac49ad1 100644
--- a/fs/xfs/xfs_fsops.c
+++ b/fs/xfs/xfs_fsops.c
@@ -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);
@@ -226,6 +230,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);
@@ -251,6 +259,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);
@@ -273,6 +285,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);
@@ -296,6 +312,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);
-- 
1.7.10

<Prev in Thread] Current Thread [Next in Thread>