staging: lustre: fix min() comparison types lacks cast build warning
authorJeremiah Mahler <jmmahler@gmail.com>
Sun, 18 Jan 2015 11:17:52 +0000 (03:17 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 25 Jan 2015 11:59:14 +0000 (19:59 +0800)
Recent changes to use the builtin min functions [1] introduced
type checking which wasn't present before.  This resulted in
"comparision of distinct pointer types lacks a cast" build
warnings on non X86 architectures [2,3].

  [1]: https://lkml.org/lkml/2014/12/25/145
  [2]: https://lists.01.org/pipermail/kbuild-all/2015-January/008588.html
  [3]: https://lists.01.org/pipermail/kbuild-all/2015-January/008589.html

The call to min() which resulted in this warning took the result
of kiblnd_rd_frag_size(), which returned a __u32, and the
variable 'resid', which is an int.  'resid' is inside a while
loop which is only entered if it is positive.  Casting it as a
__u32 can be perormed without a loss of data or change in
functionality.

Fix the warning by casting 'resid' as a __u32.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Jeremiah Mahler <jmmahler@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c

index 4fd5d94dbbff3000ccbe48c25592fe9c79a1d3c9..48d885dc51d93abf9c3504de3ea319433ef46388 100644 (file)
@@ -1126,7 +1126,8 @@ kiblnd_init_rdma (kib_conn_t *conn, kib_tx_t *tx, int type,
                }
 
                wrknob = min(min(kiblnd_rd_frag_size(srcrd, srcidx),
-                                kiblnd_rd_frag_size(dstrd, dstidx)), resid);
+                                kiblnd_rd_frag_size(dstrd, dstidx)),
+                            (__u32) resid);
 
                sge = &tx->tx_sge[tx->tx_nwrq];
                sge->addr   = kiblnd_rd_frag_addr(srcrd, srcidx);