IB/qib: Don't rely on (undefined) order of function parameter evaluation
authorRoland Dreier <rolandd@cisco.com>
Wed, 26 May 2010 20:15:06 +0000 (13:15 -0700)
committerRoland Dreier <rolandd@cisco.com>
Wed, 26 May 2010 20:15:06 +0000 (13:15 -0700)
commitf27ec1d6db4aa3348ca7be896f1466599aecea3e
treeaac2df369645a816fbfb81ee3e89ab52ad8d6423
parent7e3a1f4ab1a550dd6cf62a23aabedbad0d23e2d7
IB/qib: Don't rely on (undefined) order of function parameter evaluation

Some of the qib sysfs code passes a buffer pointer into
simple_read_from_buffer() but relies on a function call in another
parameter of the same call to initialize that pointer.  Since the order
of evaluation of function parameters is undefined, this will break if
gcc chooses the wrong order.

Fix this by splitting the code into two separate function calls.

This was noticed because of warnings like the following on ppc:

    drivers/infiniband/hw/qib/qib_fs.c: In function 'portcntrs_2_read':
    drivers/infiniband/hw/qib/qib_fs.c:203: warning: 'counters' is used uninitialized in this function

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/qib/qib_fs.c