2014-04-18 20:10:17

by Tim Gardner

[permalink] [raw]
Subject: [PATCH net-next] xprtrdma: rpcrdma_register_default_external: Silence frame size warning

net/sunrpc/xprtrdma/verbs.c: In function 'rpcrdma_register_default_external':
net/sunrpc/xprtrdma/verbs.c:1774:1: warning: the frame size of 1048 bytes is larger than 1024 bytes [-Wframe-larger-than=]

gcc version 4.8.2, x86_64-linux-gnu

Cc: Trond Myklebust <[email protected]>
Cc: "J. Bruce Fields" <[email protected]>
Cc: "David S. Miller" <[email protected]>
Signed-off-by: Tim Gardner <[email protected]>
---
net/sunrpc/xprtrdma/verbs.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
index 93726560..8130349 100644
--- a/net/sunrpc/xprtrdma/verbs.c
+++ b/net/sunrpc/xprtrdma/verbs.c
@@ -1736,9 +1736,13 @@ rpcrdma_register_default_external(struct rpcrdma_mr_seg *seg,
int mem_priv = (writing ? IB_ACCESS_REMOTE_WRITE :
IB_ACCESS_REMOTE_READ);
struct rpcrdma_mr_seg *seg1 = seg;
- struct ib_phys_buf ipb[RPCRDMA_MAX_DATA_SEGS];
+ struct ib_phys_buf *ipb;
int len, i, rc = 0;

+ ipb = kmalloc(sizeof(*ipb) * RPCRDMA_MAX_DATA_SEGS, GFP_ATOMIC);
+ if (!ipb)
+ return -ENOMEM;
+
if (*nsegs > RPCRDMA_MAX_DATA_SEGS)
*nsegs = RPCRDMA_MAX_DATA_SEGS;
for (len = 0, i = 0; i < *nsegs;) {
@@ -1770,6 +1774,8 @@ rpcrdma_register_default_external(struct rpcrdma_mr_seg *seg,
seg1->mr_len = len;
}
*nsegs = i;
+
+ kfree(ipb);
return rc;
}

--
1.7.9.5



2014-04-18 20:26:57

by Tim Gardner

[permalink] [raw]
Subject: Re: [PATCH net-next] xprtrdma: rpcrdma_register_default_external: Silence frame size warning

On 04/18/2014 01:52 PM, Trond Myklebust wrote:
>
> On Fri, Apr 18, 2014 at 3:50 PM, Tim Gardner <[email protected]
> <mailto:[email protected]>> wrote:
>
> net/sunrpc/xprtrdma/verbs.c: In function
> 'rpcrdma_register_default_external':
> net/sunrpc/xprtrdma/verbs.c:1774:1: warning: the frame size of 1048
> bytes is larger than 1024 bytes [-Wframe-larger-than=]
>
> gcc version 4.8.2, x86_64-linux-gnu
>
> Cc: Trond Myklebust <[email protected]
> <mailto:[email protected]>>
> Cc: "J. Bruce Fields" <[email protected]
> <mailto:[email protected]>>
> Cc: "David S. Miller" <[email protected] <mailto:[email protected]>>
> Signed-off-by: Tim Gardner <[email protected]
> <mailto:[email protected]>>
> ---
> net/sunrpc/xprtrdma/verbs.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
> index 93726560..8130349 100644
> --- a/net/sunrpc/xprtrdma/verbs.c
> +++ b/net/sunrpc/xprtrdma/verbs.c
> @@ -1736,9 +1736,13 @@ rpcrdma_register_default_external(struct
> rpcrdma_mr_seg *seg,
> int mem_priv = (writing ? IB_ACCESS_REMOTE_WRITE :
> IB_ACCESS_REMOTE_READ);
> struct rpcrdma_mr_seg *seg1 = seg;
> - struct ib_phys_buf ipb[RPCRDMA_MAX_DATA_SEGS];
> + struct ib_phys_buf *ipb;
> int len, i, rc = 0;
>
> + ipb = kmalloc(sizeof(*ipb) * RPCRDMA_MAX_DATA_SEGS, GFP_ATOMIC);
> + if (!ipb)
> + return -ENOMEM;
> +
> if (*nsegs > RPCRDMA_MAX_DATA_SEGS)
> *nsegs = RPCRDMA_MAX_DATA_SEGS;
> for (len = 0, i = 0; i < *nsegs;) {
> @@ -1770,6 +1774,8 @@ rpcrdma_register_default_external(struct
> rpcrdma_mr_seg *seg,
> seg1->mr_len = len;
> }
> *nsegs = i;
> +
> + kfree(ipb);
> return rc;
> }
>
> --
> 1.7.9.5
>
> What has this got to do with net-next? It is RPC related...
>
> --
>
> Trond Myklebust
>
> Linux NFS client maintainer, PrimaryData
>
> [email protected] <mailto:[email protected]>
>

I guess I naively thought that anything under the net directory went
through Dave's tree.

rtg
--
Tim Gardner [email protected]