From: Alex Elder <aelder@sgi.com>
To: sekharan@us.ibm.com
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH 03/12] xfs: Remove the macro XFS_BUF_ERROR and family
Date: Fri, 22 Jul 2011 16:30:30 -0500 [thread overview]
Message-ID: <1311370230.2771.147.camel@doink> (raw)
In-Reply-To: <1311369055.2771.139.camel@doink>
On Fri, 2011-07-22 at 16:10 -0500, Alex Elder wrote:
> On Fri, 2011-07-22 at 13:49 -0700, Chandra Seetharaman wrote:
> > Thanks for the review Alex.
> >
> > See below for comments.
> >
> > On Fri, 2011-07-22 at 14:38 -0500, Alex Elder wrote:
> > > On Thu, 2011-07-21 at 17:32 -0700, Chandra Seetharaman wrote:
> > > > Remove the definitions and usage of the macros XFS_BUF_ERROR,
>
> . . .
Looking my message again, I think I may have gotten confused
along the way.
. . .
> > > > diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
> > > > index 88d1214..97daa35 100644
> > > > --- a/fs/xfs/xfs_vnodeops.c
> > > > +++ b/fs/xfs/xfs_vnodeops.c
> > > > @@ -83,7 +83,7 @@ xfs_readlink_bmap(
> > > >
> > > > bp = xfs_buf_read(mp->m_ddev_targp, d, BTOBB(byte_cnt),
> > > > XBF_LOCK | XBF_MAPPED | XBF_DONT_BLOCK);
> > >
> > > xfs_buf_read() can return NULL here, so to match
> > > the existing behavior you should call xfs_buf_geterror()
> > > here.
> > >
> > > > - error = XFS_BUF_GETERROR(bp);
> > > > + error = bp->b_error;
> > > > if (error) {
> > > > xfs_ioerror_alert("xfs_readlink",
> > > > ip->i_mount, bp, XFS_BUF_ADDR(bp));
> >
> > I did the change consciously. If bp were NULL, error would have been set
> > to ENOMEM, and xfs_ioerror_alert() and xfs_buf_relse(), would have
> > accessed bp and tripped anyways. So, I felt using the indirection
> > (xfs_buf_geterror()) is not adding any value, hence set error by
> > directly accessing b_error.
>
> But you are dereferencing a possibly null pointer in the
> code you added. Yes, the code that was already there
> should not dereference it either, but that's no excuse
> for you to do it. (And fix the other code while you're
> there, or make a note to get it fixed later.)
The comment above I stand by. But the next one I think
applies to another hunk of code.
In any case, hopefully you understand what my point
is and you'll be able to update your patch accordingly.
Sorry for the confusion.
-Alex
> The reason it's important here is that the value of error
> gets passed back to the caller, and although I didn't
> go very far back to see what effect it has, a quick look
> showed that it might lead to different behavior. As I
> said, it might be *correct* behavior, but in any case it's
> different, so it belongs in its own commit.
>
> > There are more place like these.
>
> I noticed you doing this sort of thing in a bunch of other
> spots in your patch, and in all of them they seemed to
> follow a test that ensured the buffer pointer was non-null
> (or it was implicit, because some *prior* dereference of
> the pointer would have been a problem) therefore simply
> checking bp->b_error was a fine replacement.
>
> But in this one spot, it's a bit different, so I called
> attention to it.
>
> If you are convinced I'm mistaken and this will produce
> results identical to before, say so and I'll take a
> closer look.
>
> > What do you think of this option
> >
> > Leave this as is (with b_error), and send another patch to check for bp
> > after xfs_buf_read() in all places (if you want this option, what do you
> > think error should be set to, I see both EIO and ENOMEM used. I think it
> > should be the same always).
> >
> > If you don't like that option I can revert to xfs_buf_geterror() too.
>
> I think using xfs_buf_geterror() is the easiest thing
> to do right now. Changing it such that xfs_readlink_bmap()
> returns ENOMEM in the event xfs_buf_read() here returns a null
> pointer sounds like a reasonable thing to do, but do it in
> a separate patch that focuses on that change and why it's
> correct. And (despite what I said earlier) I guess do it
> *after* we've got this series in. I'm about ready to get
> it committed once you get it updated.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2011-07-22 21:32 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-22 0:32 [PATCH 00/12] Remove number of macros from xfs_buf.h Chandra Seetharaman
2011-07-22 0:32 ` [PATCH 01/12] xfs: Remove the macro XFS_BUF_BFLAGS Chandra Seetharaman
2011-07-22 19:37 ` Alex Elder
2011-07-22 0:32 ` [PATCH 02/12] xfs: Remove the macro XFS_BUF_ZEROFLAGS Chandra Seetharaman
2011-07-22 0:32 ` [PATCH 03/12] xfs: Remove the macro XFS_BUF_ERROR and family Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 20:49 ` Chandra Seetharaman
2011-07-22 21:10 ` Alex Elder
2011-07-22 21:30 ` Alex Elder [this message]
2011-07-22 21:31 ` Chandra Seetharaman
2011-07-22 0:33 ` [PATCH 04/12] xfs: Remove macro XFS_BUF_BUSY " Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 0:33 ` [PATCH 05/12] xfs: Remove macro XFS_BUF_HOLD Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 0:33 ` [PATCH 06/12] xfs: Remove macro XFS_BUF_SET_START Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 0:33 ` [PATCH 07/12] xfs: Remove the macro XFS_BUF_PTR Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 0:33 ` [PATCH 08/12] xfs: Remove the macro XFS_BUF_SET_PTR Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 20:50 ` Chandra Seetharaman
2011-07-24 11:35 ` Christoph Hellwig
2011-07-25 15:57 ` Alex Elder
2011-07-25 16:25 ` Christoph Hellwig
2011-07-25 16:58 ` Alex Elder
2011-07-25 22:18 ` Chandra Seetharaman
2011-07-22 0:33 ` [PATCH 09/12] Replace the macro XFS_BUF_ISPINNED with helper xfs_buf_ispinned Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 20:51 ` Chandra Seetharaman
2011-07-22 0:33 ` [PATCH 10/12] xfs: Remove the macro XFS_BUF_SET_TARGET Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 0:34 ` [PATCH 11/12] xfs: Remove the macro XFS_BUF_TARGET Chandra Seetharaman
2011-07-22 19:38 ` Alex Elder
2011-07-22 19:46 ` Alex Elder
2011-07-22 0:34 ` [PATCH 12/12] xfs: Remove the macro XFS_BUFTARG_NAME Chandra Seetharaman
2011-07-22 19:49 ` Alex Elder
2011-07-22 21:23 ` Chandra Seetharaman
2011-07-22 21:26 ` Chandra Seetharaman
2011-07-24 11:37 ` Christoph Hellwig
2011-07-25 15:57 ` Alex Elder
2011-07-25 16:26 ` Christoph Hellwig
2011-07-25 22:18 ` Chandra Seetharaman
-- strict thread matches above, loose matches on Subject: below --
2011-07-16 1:21 [PATCH 00/12] Remove number of macros from xfs_buf.h Chandra Seetharaman
2011-07-16 1:21 ` [PATCH 03/12] xfs: Remove the macro XFS_BUF_ERROR and family Chandra Seetharaman
2011-07-16 2:00 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1311370230.2771.147.camel@doink \
--to=aelder@sgi.com \
--cc=sekharan@us.ibm.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.