Commit b522950f0ab8551f2ef56c210ebd50e6c6396601
Committed by
Alex Elder
1 parent
04f658ee22
Exists in
master
and in
6 other branches
xfs: Check the return value of xfs_buf_get()
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>
Showing 2 changed files with 22 additions and 2 deletions Side-by-side Diff
fs/xfs/xfs_attr.c
... | ... | @@ -2109,8 +2109,8 @@ |
2109 | 2109 | |
2110 | 2110 | bp = xfs_buf_get(mp->m_ddev_targp, dblkno, blkcnt, |
2111 | 2111 | XBF_LOCK | XBF_DONT_BLOCK); |
2112 | - ASSERT(!xfs_buf_geterror(bp)); | |
2113 | - | |
2112 | + if (!bp) | |
2113 | + return ENOMEM; | |
2114 | 2114 | tmp = (valuelen < XFS_BUF_SIZE(bp)) ? valuelen : |
2115 | 2115 | XFS_BUF_SIZE(bp); |
2116 | 2116 | xfs_buf_iomove(bp, 0, tmp, src, XBRW_WRITE); |
fs/xfs/xfs_fsops.c
... | ... | @@ -194,6 +194,10 @@ |
194 | 194 | bp = xfs_buf_get(mp->m_ddev_targp, |
195 | 195 | XFS_AG_DADDR(mp, agno, XFS_AGF_DADDR(mp)), |
196 | 196 | XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED); |
197 | + if (!bp) { | |
198 | + error = ENOMEM; | |
199 | + goto error0; | |
200 | + } | |
197 | 201 | agf = XFS_BUF_TO_AGF(bp); |
198 | 202 | memset(agf, 0, mp->m_sb.sb_sectsize); |
199 | 203 | agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC); |
... | ... | @@ -227,6 +231,10 @@ |
227 | 231 | bp = xfs_buf_get(mp->m_ddev_targp, |
228 | 232 | XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)), |
229 | 233 | XFS_FSS_TO_BB(mp, 1), XBF_LOCK | XBF_MAPPED); |
234 | + if (!bp) { | |
235 | + error = ENOMEM; | |
236 | + goto error0; | |
237 | + } | |
230 | 238 | agi = XFS_BUF_TO_AGI(bp); |
231 | 239 | memset(agi, 0, mp->m_sb.sb_sectsize); |
232 | 240 | agi->agi_magicnum = cpu_to_be32(XFS_AGI_MAGIC); |
... | ... | @@ -253,6 +261,10 @@ |
253 | 261 | XFS_AGB_TO_DADDR(mp, agno, XFS_BNO_BLOCK(mp)), |
254 | 262 | BTOBB(mp->m_sb.sb_blocksize), |
255 | 263 | XBF_LOCK | XBF_MAPPED); |
264 | + if (!bp) { | |
265 | + error = ENOMEM; | |
266 | + goto error0; | |
267 | + } | |
256 | 268 | block = XFS_BUF_TO_BLOCK(bp); |
257 | 269 | memset(block, 0, mp->m_sb.sb_blocksize); |
258 | 270 | block->bb_magic = cpu_to_be32(XFS_ABTB_MAGIC); |
... | ... | @@ -276,6 +288,10 @@ |
276 | 288 | XFS_AGB_TO_DADDR(mp, agno, XFS_CNT_BLOCK(mp)), |
277 | 289 | BTOBB(mp->m_sb.sb_blocksize), |
278 | 290 | XBF_LOCK | XBF_MAPPED); |
291 | + if (!bp) { | |
292 | + error = ENOMEM; | |
293 | + goto error0; | |
294 | + } | |
279 | 295 | block = XFS_BUF_TO_BLOCK(bp); |
280 | 296 | memset(block, 0, mp->m_sb.sb_blocksize); |
281 | 297 | block->bb_magic = cpu_to_be32(XFS_ABTC_MAGIC); |
... | ... | @@ -300,6 +316,10 @@ |
300 | 316 | XFS_AGB_TO_DADDR(mp, agno, XFS_IBT_BLOCK(mp)), |
301 | 317 | BTOBB(mp->m_sb.sb_blocksize), |
302 | 318 | XBF_LOCK | XBF_MAPPED); |
319 | + if (!bp) { | |
320 | + error = ENOMEM; | |
321 | + goto error0; | |
322 | + } | |
303 | 323 | block = XFS_BUF_TO_BLOCK(bp); |
304 | 324 | memset(block, 0, mp->m_sb.sb_blocksize); |
305 | 325 | block->bb_magic = cpu_to_be32(XFS_IBT_MAGIC); |