mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] NFSv4.x: hide array-bounds warning
@ 2016-11-22 20:50 Arnd Bergmann
  2016-11-22 21:53 ` Anna Schumaker
  0 siblings, 1 reply; 2+ messages in thread
From: Arnd Bergmann @ 2016-11-22 20:50 UTC (permalink / raw)
  To: Trond Myklebust; +Cc: Arnd Bergmann, Anna Schumaker, linux-nfs, linux-kernel

A correct bugfix introduced a harmless warning that shows up with gcc-7:

fs/nfs/callback.c: In function 'nfs_callback_up':
fs/nfs/callback.c:214:14: error: array subscript is outside array bounds [-Werror=array-bounds]

What happens here is that the 'minorversion == 0' check tells the
compiler that we assume minorversion can be something other than 0,
but when CONFIG_NFS_V4_1 is disabled that would be invalid and
result in an out-of-bounds access.

The added check for IS_ENABLED(CONFIG_NFS_V4_1) tells gcc that this
really can't happen, which makes the code slightly smaller and also
avoids the warning.

The bugfix that introduced the warning is marked for stable backports,
we want this one backported to the same releases.

Fixes: 98b0f80c2396 ("NFSv4.x: Fix a refcount leak in nfs_callback_up_net")
Cc: stable@vger.kernel.org # v3.7+
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/nfs/callback.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index 532d8e242d4d..484bebc20bca 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -197,7 +197,7 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv,
 	}
 
 	ret = -EPROTONOSUPPORT;
-	if (minorversion == 0)
+	if (!IS_ENABLED(CONFIG_NFS_V4_1) || minorversion == 0)
 		ret = nfs4_callback_up_net(serv, net);
 	else if (xprt->ops->bc_up)
 		ret = xprt->ops->bc_up(serv, net);
-- 
2.9.0

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

* Re: [PATCH] NFSv4.x: hide array-bounds warning
  2016-11-22 20:50 [PATCH] NFSv4.x: hide array-bounds warning Arnd Bergmann
@ 2016-11-22 21:53 ` Anna Schumaker
  0 siblings, 0 replies; 2+ messages in thread
From: Anna Schumaker @ 2016-11-22 21:53 UTC (permalink / raw)
  To: Arnd Bergmann, Trond Myklebust; +Cc: linux-nfs, linux-kernel

Thanks, Arnd!  I'll send it for 4.9

Anna

On 11/22/2016 03:50 PM, Arnd Bergmann wrote:
> A correct bugfix introduced a harmless warning that shows up with gcc-7:
> 
> fs/nfs/callback.c: In function 'nfs_callback_up':
> fs/nfs/callback.c:214:14: error: array subscript is outside array bounds [-Werror=array-bounds]
> 
> What happens here is that the 'minorversion == 0' check tells the
> compiler that we assume minorversion can be something other than 0,
> but when CONFIG_NFS_V4_1 is disabled that would be invalid and
> result in an out-of-bounds access.
> 
> The added check for IS_ENABLED(CONFIG_NFS_V4_1) tells gcc that this
> really can't happen, which makes the code slightly smaller and also
> avoids the warning.
> 
> The bugfix that introduced the warning is marked for stable backports,
> we want this one backported to the same releases.
> 
> Fixes: 98b0f80c2396 ("NFSv4.x: Fix a refcount leak in nfs_callback_up_net")
> Cc: stable@vger.kernel.org # v3.7+
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  fs/nfs/callback.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
> index 532d8e242d4d..484bebc20bca 100644
> --- a/fs/nfs/callback.c
> +++ b/fs/nfs/callback.c
> @@ -197,7 +197,7 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv,
>  	}
>  
>  	ret = -EPROTONOSUPPORT;
> -	if (minorversion == 0)
> +	if (!IS_ENABLED(CONFIG_NFS_V4_1) || minorversion == 0)
>  		ret = nfs4_callback_up_net(serv, net);
>  	else if (xprt->ops->bc_up)
>  		ret = xprt->ops->bc_up(serv, net);
> 

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

end of thread, other threads:[~2016-11-22 22:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-22 20:50 [PATCH] NFSv4.x: hide array-bounds warning Arnd Bergmann
2016-11-22 21:53 ` Anna Schumaker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®