OSDN Git Service

xprtrdma: Address sparse complaint in rpcr_to_rdmar()
authorChuck Lever <chuck.lever@oracle.com>
Wed, 4 Feb 2015 21:59:32 +0000 (16:59 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Thu, 5 Feb 2015 20:38:29 +0000 (15:38 -0500)
With "make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__":

linux-2.6/net/sunrpc/xprtrdma/xprt_rdma.h:273:30: warning: incorrect
  type in initializer (different base types)
linux-2.6/net/sunrpc/xprtrdma/xprt_rdma.h:273:30: expected restricted
  __be32 [usertype] *buffer
linux-2.6/net/sunrpc/xprtrdma/xprt_rdma.h:273:30:    got unsigned int
  [usertype] *rq_buffer

As far as I can tell this is a false positive.

Reported-by: kbuild-all@01.org
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/xprtrdma/xprt_rdma.h

index c9d2a02..d1b7039 100644 (file)
@@ -270,9 +270,10 @@ struct rpcrdma_req {
 static inline struct rpcrdma_req *
 rpcr_to_rdmar(struct rpc_rqst *rqst)
 {
-       struct rpcrdma_regbuf *rb = container_of(rqst->rq_buffer,
-                                                struct rpcrdma_regbuf,
-                                                rg_base[0]);
+       void *buffer = rqst->rq_buffer;
+       struct rpcrdma_regbuf *rb;
+
+       rb = container_of(buffer, struct rpcrdma_regbuf, rg_base);
        return rb->rg_owner;
 }