Thanks for the review, Alex.
On Mon, 2011-09-19 at 11:36 -0500, Alex Elder wrote:
> On Wed, 2011-09-07 at 11:01 -0500, Chandra Seetharaman wrote:
> > Check the return value of xfs_trans_get_buf() and fail appropriately.
> >
> > Signed-off-by: Chandra Seetharaman <sekharan@xxxxxxxxxx>
>
> Sorry it took a while to get to this.
>
> I started following back some of the paths that
> now (with your patch) return ENOMEM where they
> might not have before. But I soon gave up because
> it explodes a bit in the number of possibilities.
> I did verify that the places that now return ENOMEM
Yes, I did check the callers to verify that they handle errors.
> have callers that check for an error return, so I'm
> going to just trust that's OK and that you have
> ensured there aren't any spots that do something
> unwanted in the event ENOMEM gets returned.
>
> I did find something that may be a problem, so
> I'd like you to take another look and either
> explain why it's OK, or send an update to correct
> it.
>
> Thanks.
>
> -Alex
>
> . . .
>
> > diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
> > index c2ff0fc..a4f3624 100644
> > --- a/fs/xfs/xfs_vnodeops.c
> > +++ b/fs/xfs/xfs_vnodeops.c
> > @@ -308,6 +308,8 @@ xfs_inactive_symlink_rmt(
> > bp = xfs_trans_get_buf(tp, mp->m_ddev_targp,
> > XFS_FSB_TO_DADDR(mp, mval[i].br_startblock),
> > XFS_FSB_TO_BB(mp, mval[i].br_blockcount), 0);
> > + if (!bp)
> > + goto error1;
>
> In this function, simply going to error1 will result
> in a 0 getting returned to the caller, because error
> had value 0 at this point. I think you want something
> more like:
oops. overlook on my part. Sorry, about that. will fix it.
> if (!bp) {
> error = ENOMEM;
> goto error1;
> }
>
>
> > xfs_trans_binval(tp, bp);
> > }
> > /*
> > @@ -1648,7 +1650,8 @@ xfs_symlink(
> > byte_cnt = XFS_FSB_TO_B(mp, mval[n].br_blockcount);
> > bp = xfs_trans_get_buf(tp, mp->m_ddev_targp, d,
> > BTOBB(byte_cnt), 0);
> > - ASSERT(!xfs_buf_geterror(bp));
> > + if (!bp)
> > + goto error2;
>
> Same thing here. I think you want to set error to
> something before the "goto error2".
Same here.
>
> > if (pathlen < byte_cnt) {
> > byte_cnt = pathlen;
> > }
> >
> >
> > _______________________________________________
> > xfs mailing list
> > xfs@xxxxxxxxxxx
> > http://oss.sgi.com/mailman/listinfo/xfs
>
>
>
|