linux-next: build failure after merge of the scsi-mkp tree

From: Stephen Rothwell
Date: Wed Feb 22 2017 - 22:19:27 EST


Hi Martin,

After merging the scsi-mkp tree, today's linux-next build (x86_64
allmodconfig) failed like this:

drivers/scsi/qedf/qedf_io.c: In function 'qedf_trace_io':
drivers/scsi/qedf/qedf_io.c:1001:33: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
io_log->refcount = atomic_read(&io_req->refcount.refcount);
^
In file included from arch/x86/include/asm/msr.h:66:0,
from arch/x86/include/asm/processor.h:20,
from arch/x86/include/asm/cpufeature.h:4,
from arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:25,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from drivers/scsi/qedf/qedf_io.c:9:
arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
static __always_inline int atomic_read(const atomic_t *v)
^
drivers/scsi/qedf/qedf_io.c: In function 'qedf_scsi_completion':
drivers/scsi/qedf/qedf_io.c:1343:27: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
refcount = atomic_read(&io_req->refcount.refcount);
^
In file included from arch/x86/include/asm/msr.h:66:0,
from arch/x86/include/asm/processor.h:20,
from arch/x86/include/asm/cpufeature.h:4,
from arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:25,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from drivers/scsi/qedf/qedf_io.c:9:
arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
static __always_inline int atomic_read(const atomic_t *v)
^
drivers/scsi/qedf/qedf_io.c: In function 'qedf_scsi_done':
drivers/scsi/qedf/qedf_io.c:1428:25: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
refcount = atomic_read(&io_req->refcount.refcount);
^
In file included from arch/x86/include/asm/msr.h:66:0,
from arch/x86/include/asm/processor.h:20,
from arch/x86/include/asm/cpufeature.h:4,
from arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:25,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from drivers/scsi/qedf/qedf_io.c:9:
arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
static __always_inline int atomic_read(const atomic_t *v)
^
In file included from drivers/scsi/qedf/qedf.h:28:0,
from drivers/scsi/qedf/qedf_io.c:11:
drivers/scsi/qedf/qedf_io.c: In function 'qedf_flush_els_req':
drivers/scsi/qedf/qedf_io.c:1559:18: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
atomic_read(&els_req->refcount.refcount));
^
drivers/scsi/qedf/qedf_dbg.h:83:13: note: in definition of macro 'QEDF_INFO'
## __VA_ARGS__)
^
In file included from arch/x86/include/asm/msr.h:66:0,
from arch/x86/include/asm/processor.h:20,
from arch/x86/include/asm/cpufeature.h:4,
from arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:25,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from drivers/scsi/qedf/qedf_io.c:9:
arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
static __always_inline int atomic_read(const atomic_t *v)
^
drivers/scsi/qedf/qedf_els.c: In function 'qedf_rrq_compl':
drivers/scsi/qedf/qedf_els.c:186:25: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
refcount = atomic_read(&orig_io_req->refcount.refcount);
^
In file included from arch/x86/include/asm/msr.h:66:0,
from arch/x86/include/asm/processor.h:20,
from arch/x86/include/asm/cpufeature.h:4,
from arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:25,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from include/linux/mm_types.h:8,
from include/linux/kmemcheck.h:4,
from include/linux/skbuff.h:18,
from include/linux/if_ether.h:23,
from include/linux/etherdevice.h:25,
from include/scsi/libfcoe.h:24,
from drivers/scsi/qedf/qedf.h:12,
from drivers/scsi/qedf/qedf_els.c:9:
arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
static __always_inline int atomic_read(const atomic_t *v)
^
drivers/scsi/qedf/qedf_els.c: In function 'qedf_srr_compl':
drivers/scsi/qedf/qedf_els.c:477:25: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
refcount = atomic_read(&orig_io_req->refcount.refcount);
^
In file included from arch/x86/include/asm/msr.h:66:0,
from arch/x86/include/asm/processor.h:20,
from arch/x86/include/asm/cpufeature.h:4,
from arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:25,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from include/linux/mm_types.h:8,
from include/linux/kmemcheck.h:4,
from include/linux/skbuff.h:18,
from include/linux/if_ether.h:23,
from include/linux/etherdevice.h:25,
from include/scsi/libfcoe.h:24,
from drivers/scsi/qedf/qedf.h:12,
from drivers/scsi/qedf/qedf_els.c:9:
arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
static __always_inline int atomic_read(const atomic_t *v)
^
drivers/scsi/qedf/qedf_els.c: In function 'qedf_rec_compl':
drivers/scsi/qedf/qedf_els.c:761:25: error: passing argument 1 of 'atomic_read' from incompatible pointer type [-Werror=incompatible-pointer-types]
refcount = atomic_read(&orig_io_req->refcount.refcount);
^
In file included from arch/x86/include/asm/msr.h:66:0,
from arch/x86/include/asm/processor.h:20,
from arch/x86/include/asm/cpufeature.h:4,
from arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:25,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from include/linux/mm_types.h:8,
from include/linux/kmemcheck.h:4,
from include/linux/skbuff.h:18,
from include/linux/if_ether.h:23,
from include/linux/etherdevice.h:25,
from include/scsi/libfcoe.h:24,
from drivers/scsi/qedf/qedf.h:12,
from drivers/scsi/qedf/qedf_els.c:9:
arch/x86/include/asm/atomic.h:24:28: note: expected 'const atomic_t * {aka const struct <anonymous> *}' but argument is of type 'refcount_t * {aka struct refcount_struct *}'
static __always_inline int atomic_read(const atomic_t *v)
^

Caused by commit

61d8658b4a43 ("scsi: qedf: Add QLogic FastLinQ offload FCoE driver framework")

being rebased on top of commit

10383aea2f44 ("kref: Implement 'struct kref' using refcount_t")

and not using kref_read() to access the refcounts.

I don't understand why you would rebase you work onto Linus' tree in
the middle of the merge window in any case. :-(

I have used the scsi-mkp tree from next-20170221 again.
--
Cheers,
Stephen Rothwell