2014-10-29 08:44:38

by Dan Carpenter

[permalink] [raw]
Subject: [patch] SUNRPC: off by one in BUG_ON()

The m->pool_to[] array has "maxpools" number of elements. It's
allocated in svc_pool_map_alloc_arrays() which we called earlier in the
function. This test should be >= instead of >.

Signed-off-by: Dan Carpenter <[email protected]>
---
This is very old code, but hopefully the off by one doesn't affect
runtime.

diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index ca8a795..349c98f 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -189,7 +189,7 @@ svc_pool_map_init_percpu(struct svc_pool_map *m)
return err;

for_each_online_cpu(cpu) {
- BUG_ON(pidx > maxpools);
+ BUG_ON(pidx >= maxpools);
m->to_pool[cpu] = pidx;
m->pool_to[pidx] = cpu;
pidx++;


2014-10-29 15:38:13

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [patch] SUNRPC: off by one in BUG_ON()

On Wed, Oct 29, 2014 at 11:44:16AM +0300, Dan Carpenter wrote:
> The m->pool_to[] array has "maxpools" number of elements. It's
> allocated in svc_pool_map_alloc_arrays() which we called earlier in the
> function. This test should be >= instead of >.
>
> Signed-off-by: Dan Carpenter <[email protected]>
> ---
> This is very old code, but hopefully the off by one doesn't affect
> runtime.

Yeah, doesn't look like a big deal, but thanks, applying for 3.19.--b.

>
> diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
> index ca8a795..349c98f 100644
> --- a/net/sunrpc/svc.c
> +++ b/net/sunrpc/svc.c
> @@ -189,7 +189,7 @@ svc_pool_map_init_percpu(struct svc_pool_map *m)
> return err;
>
> for_each_online_cpu(cpu) {
> - BUG_ON(pidx > maxpools);
> + BUG_ON(pidx >= maxpools);
> m->to_pool[cpu] = pidx;
> m->pool_to[pidx] = cpu;
> pidx++;