All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] xfs: scrub: avoid uninitialized return code
@ 2017-11-02 11:11 Arnd Bergmann
  2017-11-02 11:11 ` [PATCH 2/2] xfs: fix unused variable warnings Arnd Bergmann
  2017-11-02 12:44 ` [PATCH 1/2] xfs: scrub: avoid uninitialized return code Brian Foster
  0 siblings, 2 replies; 6+ messages in thread
From: Arnd Bergmann @ 2017-11-02 11:11 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: Arnd Bergmann, linux-xfs, Dave Chinner, linux-kernel

The newly added xfs_scrub_da_btree_block() function has one code path
that returns the 'error' variable without initializing it first, as
shown by this compiler warning:

fs/xfs/scrub/dabtree.c: In function 'xfs_scrub_da_btree_block':
fs/xfs/scrub/dabtree.c:462:9: error: 'error' may be used uninitialized in this function [-Werror=maybe-uninitialized]

Returning -EINVAL might be an appropriate return code in this case.

Fixes: 7c4a07a424c1 ("xfs: scrub directory/attribute btrees")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/xfs/scrub/dabtree.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/xfs/scrub/dabtree.c b/fs/xfs/scrub/dabtree.c
index 4a93cf1753d3..971566388c9a 100644
--- a/fs/xfs/scrub/dabtree.c
+++ b/fs/xfs/scrub/dabtree.c
@@ -349,8 +349,10 @@ xfs_scrub_da_btree_block(
 
 	/* Check the pointer. */
 	blk->blkno = blkno;
-	if (!xfs_scrub_da_btree_ptr_ok(ds, level, blkno))
+	if (!xfs_scrub_da_btree_ptr_ok(ds, level, blkno)) {
+		error = -EINVAL;
 		goto out_nobuf;
+	}
 
 	/* Read the buffer. */
 	error = xfs_da_read_buf(dargs->trans, dargs->dp, blk->blkno, -2,
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] xfs: fix unused variable warnings
  2017-11-02 11:11 [PATCH 1/2] xfs: scrub: avoid uninitialized return code Arnd Bergmann
@ 2017-11-02 11:11 ` Arnd Bergmann
  2017-11-02 12:44   ` Brian Foster
  2017-11-02 12:44 ` [PATCH 1/2] xfs: scrub: avoid uninitialized return code Brian Foster
  1 sibling, 1 reply; 6+ messages in thread
From: Arnd Bergmann @ 2017-11-02 11:11 UTC (permalink / raw)
  To: Darrick J. Wong
  Cc: Arnd Bergmann, linux-xfs, Brian Foster, Dave Chinner,
	Eric Sandeen, linux-kernel

fs/xfs/libxfs/xfs_bmap.c: In function 'xfs_bmap_del_extent_delay':
fs/xfs/libxfs/xfs_bmap.c:4648:20: error: unused variable 'ifp' [-Werror=unused-variable]
  struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, whichfork);
                    ^~~
fs/xfs/libxfs/xfs_bmap.c: In function 'xfs_bmap_del_extent_cow':
fs/xfs/libxfs/xfs_bmap.c:4776:20: error: unused variable 'ifp' [-Werror=unused-variable]

Fixes: ca5d8e5b7b90 ("xfs: move pre/post-bmap tracing into xfs_iext_update_extent")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/xfs/libxfs/xfs_bmap.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
index f45f05c45e15..fa85b08b8fe2 100644
--- a/fs/xfs/libxfs/xfs_bmap.c
+++ b/fs/xfs/libxfs/xfs_bmap.c
@@ -4645,7 +4645,6 @@ xfs_bmap_del_extent_delay(
 	struct xfs_bmbt_irec	*del)
 {
 	struct xfs_mount	*mp = ip->i_mount;
-	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, whichfork);
 	struct xfs_bmbt_irec	new;
 	int64_t			da_old, da_new, da_diff = 0;
 	xfs_fileoff_t		del_endoff, got_endoff;
@@ -4663,7 +4662,7 @@ xfs_bmap_del_extent_delay(
 	da_new = 0;
 
 	ASSERT(*idx >= 0);
-	ASSERT(*idx <= xfs_iext_count(ifp));
+	ASSERT(*idx <= xfs_iext_count(XFS_IFORK_PTR(ip, whichfork)));
 	ASSERT(del->br_blockcount > 0);
 	ASSERT(got->br_startoff <= del->br_startoff);
 	ASSERT(got_endoff >= del_endoff);
@@ -4773,7 +4772,6 @@ xfs_bmap_del_extent_cow(
 	struct xfs_bmbt_irec	*del)
 {
 	struct xfs_mount	*mp = ip->i_mount;
-	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK);
 	struct xfs_bmbt_irec	new;
 	xfs_fileoff_t		del_endoff, got_endoff;
 	int			state = BMAP_COWFORK;
@@ -4784,7 +4782,7 @@ xfs_bmap_del_extent_cow(
 	got_endoff = got->br_startoff + got->br_blockcount;
 
 	ASSERT(*idx >= 0);
-	ASSERT(*idx <= xfs_iext_count(ifp));
+	ASSERT(*idx <= xfs_iext_count(XFS_IFORK_PTR(ip, XFS_COW_FORK)));
 	ASSERT(del->br_blockcount > 0);
 	ASSERT(got->br_startoff <= del->br_startoff);
 	ASSERT(got_endoff >= del_endoff);
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] xfs: scrub: avoid uninitialized return code
  2017-11-02 11:11 [PATCH 1/2] xfs: scrub: avoid uninitialized return code Arnd Bergmann
  2017-11-02 11:11 ` [PATCH 2/2] xfs: fix unused variable warnings Arnd Bergmann
@ 2017-11-02 12:44 ` Brian Foster
  2017-11-02 16:49   ` Darrick J. Wong
  1 sibling, 1 reply; 6+ messages in thread
From: Brian Foster @ 2017-11-02 12:44 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Darrick J. Wong, linux-xfs, Dave Chinner, linux-kernel

On Thu, Nov 02, 2017 at 12:11:12PM +0100, Arnd Bergmann wrote:
> The newly added xfs_scrub_da_btree_block() function has one code path
> that returns the 'error' variable without initializing it first, as
> shown by this compiler warning:
> 
> fs/xfs/scrub/dabtree.c: In function 'xfs_scrub_da_btree_block':
> fs/xfs/scrub/dabtree.c:462:9: error: 'error' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 
> Returning -EINVAL might be an appropriate return code in this case.
> 
> Fixes: 7c4a07a424c1 ("xfs: scrub directory/attribute btrees")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  fs/xfs/scrub/dabtree.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/xfs/scrub/dabtree.c b/fs/xfs/scrub/dabtree.c
> index 4a93cf1753d3..971566388c9a 100644
> --- a/fs/xfs/scrub/dabtree.c
> +++ b/fs/xfs/scrub/dabtree.c
> @@ -349,8 +349,10 @@ xfs_scrub_da_btree_block(
>  
>  	/* Check the pointer. */
>  	blk->blkno = blkno;
> -	if (!xfs_scrub_da_btree_ptr_ok(ds, level, blkno))
> +	if (!xfs_scrub_da_btree_ptr_ok(ds, level, blkno)) {
> +		error = -EINVAL;
>  		goto out_nobuf;
> +	}

Hmm.. is an error really the right thing to do here vs. setting the
context corrupt and returning 0? (Darrick..?) If the latter, perhaps
error should just be initialized to 0.

Brian

>  
>  	/* Read the buffer. */
>  	error = xfs_da_read_buf(dargs->trans, dargs->dp, blk->blkno, -2,
> -- 
> 2.9.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] xfs: fix unused variable warnings
  2017-11-02 11:11 ` [PATCH 2/2] xfs: fix unused variable warnings Arnd Bergmann
@ 2017-11-02 12:44   ` Brian Foster
  2017-11-02 16:52     ` Darrick J. Wong
  0 siblings, 1 reply; 6+ messages in thread
From: Brian Foster @ 2017-11-02 12:44 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Darrick J. Wong, linux-xfs, Dave Chinner, Eric Sandeen, linux-kernel

On Thu, Nov 02, 2017 at 12:11:13PM +0100, Arnd Bergmann wrote:
> fs/xfs/libxfs/xfs_bmap.c: In function 'xfs_bmap_del_extent_delay':
> fs/xfs/libxfs/xfs_bmap.c:4648:20: error: unused variable 'ifp' [-Werror=unused-variable]
>   struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, whichfork);
>                     ^~~
> fs/xfs/libxfs/xfs_bmap.c: In function 'xfs_bmap_del_extent_cow':
> fs/xfs/libxfs/xfs_bmap.c:4776:20: error: unused variable 'ifp' [-Werror=unused-variable]
> 
> Fixes: ca5d8e5b7b90 ("xfs: move pre/post-bmap tracing into xfs_iext_update_extent")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---

Thanks for sending this:

Reviewed-by: Brian Foster <bfoster@redhat.com>

>  fs/xfs/libxfs/xfs_bmap.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
> index f45f05c45e15..fa85b08b8fe2 100644
> --- a/fs/xfs/libxfs/xfs_bmap.c
> +++ b/fs/xfs/libxfs/xfs_bmap.c
> @@ -4645,7 +4645,6 @@ xfs_bmap_del_extent_delay(
>  	struct xfs_bmbt_irec	*del)
>  {
>  	struct xfs_mount	*mp = ip->i_mount;
> -	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, whichfork);
>  	struct xfs_bmbt_irec	new;
>  	int64_t			da_old, da_new, da_diff = 0;
>  	xfs_fileoff_t		del_endoff, got_endoff;
> @@ -4663,7 +4662,7 @@ xfs_bmap_del_extent_delay(
>  	da_new = 0;
>  
>  	ASSERT(*idx >= 0);
> -	ASSERT(*idx <= xfs_iext_count(ifp));
> +	ASSERT(*idx <= xfs_iext_count(XFS_IFORK_PTR(ip, whichfork)));
>  	ASSERT(del->br_blockcount > 0);
>  	ASSERT(got->br_startoff <= del->br_startoff);
>  	ASSERT(got_endoff >= del_endoff);
> @@ -4773,7 +4772,6 @@ xfs_bmap_del_extent_cow(
>  	struct xfs_bmbt_irec	*del)
>  {
>  	struct xfs_mount	*mp = ip->i_mount;
> -	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK);
>  	struct xfs_bmbt_irec	new;
>  	xfs_fileoff_t		del_endoff, got_endoff;
>  	int			state = BMAP_COWFORK;
> @@ -4784,7 +4782,7 @@ xfs_bmap_del_extent_cow(
>  	got_endoff = got->br_startoff + got->br_blockcount;
>  
>  	ASSERT(*idx >= 0);
> -	ASSERT(*idx <= xfs_iext_count(ifp));
> +	ASSERT(*idx <= xfs_iext_count(XFS_IFORK_PTR(ip, XFS_COW_FORK)));
>  	ASSERT(del->br_blockcount > 0);
>  	ASSERT(got->br_startoff <= del->br_startoff);
>  	ASSERT(got_endoff >= del_endoff);
> -- 
> 2.9.0
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] xfs: scrub: avoid uninitialized return code
  2017-11-02 12:44 ` [PATCH 1/2] xfs: scrub: avoid uninitialized return code Brian Foster
@ 2017-11-02 16:49   ` Darrick J. Wong
  0 siblings, 0 replies; 6+ messages in thread
From: Darrick J. Wong @ 2017-11-02 16:49 UTC (permalink / raw)
  To: Brian Foster; +Cc: Arnd Bergmann, linux-xfs, Dave Chinner, linux-kernel

On Thu, Nov 02, 2017 at 08:44:00AM -0400, Brian Foster wrote:
> On Thu, Nov 02, 2017 at 12:11:12PM +0100, Arnd Bergmann wrote:
> > The newly added xfs_scrub_da_btree_block() function has one code path
> > that returns the 'error' variable without initializing it first, as
> > shown by this compiler warning:
> > 
> > fs/xfs/scrub/dabtree.c: In function 'xfs_scrub_da_btree_block':
> > fs/xfs/scrub/dabtree.c:462:9: error: 'error' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > 
> > Returning -EINVAL might be an appropriate return code in this case.
> > 
> > Fixes: 7c4a07a424c1 ("xfs: scrub directory/attribute btrees")
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> >  fs/xfs/scrub/dabtree.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/fs/xfs/scrub/dabtree.c b/fs/xfs/scrub/dabtree.c
> > index 4a93cf1753d3..971566388c9a 100644
> > --- a/fs/xfs/scrub/dabtree.c
> > +++ b/fs/xfs/scrub/dabtree.c
> > @@ -349,8 +349,10 @@ xfs_scrub_da_btree_block(
> >  
> >  	/* Check the pointer. */
> >  	blk->blkno = blkno;
> > -	if (!xfs_scrub_da_btree_ptr_ok(ds, level, blkno))
> > +	if (!xfs_scrub_da_btree_ptr_ok(ds, level, blkno)) {
> > +		error = -EINVAL;
> >  		goto out_nobuf;
> > +	}
> 
> Hmm.. is an error really the right thing to do here vs. setting the
> context corrupt and returning 0? (Darrick..?) If the latter, perhaps
> error should just be initialized to 0.

Yes, zero.  We return from this function with a NULL blks[level]->bp
(and the corrupt flag set) so the caller (xfs_scrub_da_btree) will
return.

--D

> 
> Brian
> 
> >  
> >  	/* Read the buffer. */
> >  	error = xfs_da_read_buf(dargs->trans, dargs->dp, blk->blkno, -2,
> > -- 
> > 2.9.0
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] xfs: fix unused variable warnings
  2017-11-02 12:44   ` Brian Foster
@ 2017-11-02 16:52     ` Darrick J. Wong
  0 siblings, 0 replies; 6+ messages in thread
From: Darrick J. Wong @ 2017-11-02 16:52 UTC (permalink / raw)
  To: Brian Foster
  Cc: Arnd Bergmann, linux-xfs, Dave Chinner, Eric Sandeen, linux-kernel

On Thu, Nov 02, 2017 at 08:44:03AM -0400, Brian Foster wrote:
> On Thu, Nov 02, 2017 at 12:11:13PM +0100, Arnd Bergmann wrote:
> > fs/xfs/libxfs/xfs_bmap.c: In function 'xfs_bmap_del_extent_delay':
> > fs/xfs/libxfs/xfs_bmap.c:4648:20: error: unused variable 'ifp' [-Werror=unused-variable]
> >   struct xfs_ifork *ifp = XFS_IFORK_PTR(ip, whichfork);
> >                     ^~~
> > fs/xfs/libxfs/xfs_bmap.c: In function 'xfs_bmap_del_extent_cow':
> > fs/xfs/libxfs/xfs_bmap.c:4776:20: error: unused variable 'ifp' [-Werror=unused-variable]
> > 

Christoph's subsequent patch series to reimplement the incore extent map
starts using ifp for more than just the ASSERT, so I'll take this patch
if that rework doesn't land in time for 4.15.

--D

> > Fixes: ca5d8e5b7b90 ("xfs: move pre/post-bmap tracing into xfs_iext_update_extent")
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> 
> Thanks for sending this:
> 
> Reviewed-by: Brian Foster <bfoster@redhat.com>
> 
> >  fs/xfs/libxfs/xfs_bmap.c | 6 ++----
> >  1 file changed, 2 insertions(+), 4 deletions(-)
> > 
> > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
> > index f45f05c45e15..fa85b08b8fe2 100644
> > --- a/fs/xfs/libxfs/xfs_bmap.c
> > +++ b/fs/xfs/libxfs/xfs_bmap.c
> > @@ -4645,7 +4645,6 @@ xfs_bmap_del_extent_delay(
> >  	struct xfs_bmbt_irec	*del)
> >  {
> >  	struct xfs_mount	*mp = ip->i_mount;
> > -	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, whichfork);
> >  	struct xfs_bmbt_irec	new;
> >  	int64_t			da_old, da_new, da_diff = 0;
> >  	xfs_fileoff_t		del_endoff, got_endoff;
> > @@ -4663,7 +4662,7 @@ xfs_bmap_del_extent_delay(
> >  	da_new = 0;
> >  
> >  	ASSERT(*idx >= 0);
> > -	ASSERT(*idx <= xfs_iext_count(ifp));
> > +	ASSERT(*idx <= xfs_iext_count(XFS_IFORK_PTR(ip, whichfork)));
> >  	ASSERT(del->br_blockcount > 0);
> >  	ASSERT(got->br_startoff <= del->br_startoff);
> >  	ASSERT(got_endoff >= del_endoff);
> > @@ -4773,7 +4772,6 @@ xfs_bmap_del_extent_cow(
> >  	struct xfs_bmbt_irec	*del)
> >  {
> >  	struct xfs_mount	*mp = ip->i_mount;
> > -	struct xfs_ifork	*ifp = XFS_IFORK_PTR(ip, XFS_COW_FORK);
> >  	struct xfs_bmbt_irec	new;
> >  	xfs_fileoff_t		del_endoff, got_endoff;
> >  	int			state = BMAP_COWFORK;
> > @@ -4784,7 +4782,7 @@ xfs_bmap_del_extent_cow(
> >  	got_endoff = got->br_startoff + got->br_blockcount;
> >  
> >  	ASSERT(*idx >= 0);
> > -	ASSERT(*idx <= xfs_iext_count(ifp));
> > +	ASSERT(*idx <= xfs_iext_count(XFS_IFORK_PTR(ip, XFS_COW_FORK)));
> >  	ASSERT(del->br_blockcount > 0);
> >  	ASSERT(got->br_startoff <= del->br_startoff);
> >  	ASSERT(got_endoff >= del_endoff);
> > -- 
> > 2.9.0
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-11-02 16:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-02 11:11 [PATCH 1/2] xfs: scrub: avoid uninitialized return code Arnd Bergmann
2017-11-02 11:11 ` [PATCH 2/2] xfs: fix unused variable warnings Arnd Bergmann
2017-11-02 12:44   ` Brian Foster
2017-11-02 16:52     ` Darrick J. Wong
2017-11-02 12:44 ` [PATCH 1/2] xfs: scrub: avoid uninitialized return code Brian Foster
2017-11-02 16:49   ` Darrick J. Wong

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.