* [PATCH net] lan78xx: Crash in lan78xx_writ_reg (Workqueue: events lan78xx_deferred_multicast_write)
From: Raghuram Chary J @ 2018-03-27 9:21 UTC (permalink / raw)
To: davem; +Cc: netdev, unglinuxdriver, woojung.huh, raghuramchary.jallipalli
Description:
Crash was reported with syzkaller pointing to lan78xx_write_reg routine.
Root-cause:
Proper cleanup of workqueues and init/setup routines was not happening
in failure conditions.
Fix:
Handled the error conditions by cleaning up the queues and init/setup
routines.
Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Raghuram Chary J <raghuramchary.jallipalli@microchip.com>
---
drivers/net/usb/lan78xx.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 60a604cc7647..11176070b345 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2863,8 +2863,7 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
if (ret < 0) {
netdev_warn(dev->net,
"lan78xx_setup_irq_domain() failed : %d", ret);
- kfree(pdata);
- return ret;
+ goto out1;
}
dev->net->hard_header_len += TX_OVERHEAD;
@@ -2872,14 +2871,32 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
/* Init all registers */
ret = lan78xx_reset(dev);
+ if (ret) {
+ netdev_warn(dev->net, "Registers INIT FAILED....");
+ goto out2;
+ }
ret = lan78xx_mdio_init(dev);
+ if (ret) {
+ netdev_warn(dev->net, "MDIO INIT FAILED.....");
+ goto out2;
+ }
dev->net->flags |= IFF_MULTICAST;
pdata->wol = WAKE_MAGIC;
return ret;
+
+out2:
+ lan78xx_remove_irq_domain(dev);
+
+out1:
+ netdev_warn(dev->net, "Bind routine FAILED");
+ cancel_work_sync(&pdata->set_multicast);
+ cancel_work_sync(&pdata->set_vlan);
+ kfree(pdata);
+ return ret;
}
static void lan78xx_unbind(struct lan78xx_net *dev, struct usb_interface *intf)
@@ -2891,6 +2908,8 @@ static void lan78xx_unbind(struct lan78xx_net *dev, struct usb_interface *intf)
lan78xx_remove_mdio(dev);
if (pdata) {
+ cancel_work_sync(&pdata->set_multicast);
+ cancel_work_sync(&pdata->set_vlan);
netif_dbg(dev, ifdown, dev->net, "free pdata");
kfree(pdata);
pdata = NULL;
--
2.16.2
^ permalink raw reply related
* [PATCH] vhost-net: add time limitation for tx polling
From: haibinzhang(张海斌) @ 2018-03-27 9:12 UTC (permalink / raw)
To: mst@redhat.com, jasowang@redhat.com, kvm@vger.kernel.org,
virtualization@lists.linux-foundation.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
handle_tx() will delay rx for a long time when busy tx polling udp packets
with short length(ie: 1byte udp payload), because setting VHOST_NET_WEIGHT
takes into account only sent-bytes but no time. It's not fair for handle_rx(),
so needs to limit max time of tx polling.
Signed-off-by: Haibin Zhang <haibinzhang@tencent.com>
---
drivers/vhost/net.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 8139bc70ad7d..dc9218a3a75b 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -473,6 +473,7 @@ static void handle_tx(struct vhost_net *net)
struct socket *sock;
struct vhost_net_ubuf_ref *uninitialized_var(ubufs);
bool zcopy, zcopy_used;
+ unsigned long start = jiffies;
mutex_lock(&vq->mutex);
sock = vq->private_data;
@@ -580,7 +581,7 @@ static void handle_tx(struct vhost_net *net)
else
vhost_zerocopy_signal_used(net, vq);
vhost_net_tx_packet(net);
- if (unlikely(total_len >= VHOST_NET_WEIGHT)) {
+ if (unlikely(total_len >= VHOST_NET_WEIGHT) || unlikely(jiffies - start >= 1)) {
vhost_poll_queue(&vq->poll);
break;
}
--
2.12.3
^ permalink raw reply related
* Re: [PATCH bpf-next] bpf: sockmap: initialize sg table entries properly
From: Daniel Borkmann @ 2018-03-27 9:05 UTC (permalink / raw)
To: Prashant Bhole, John Fastabend
Cc: Alexei Starovoitov, David S . Miller, netdev
In-Reply-To: <87c1e6e0-913f-2297-986f-f6b70ce1e485@lab.ntt.co.jp>
On 03/27/2018 10:41 AM, Prashant Bhole wrote:
> On 3/27/2018 12:15 PM, John Fastabend wrote:
>> On 03/25/2018 11:54 PM, Prashant Bhole wrote:
>>> When CONFIG_DEBUG_SG is set, sg->sg_magic is initialized to SG_MAGIC,
>>> when sg table is initialized using sg_init_table(). Magic is checked
>>> while navigating the scatterlist. We hit BUG_ON when magic check is
>>> failed.
>>>
>>> Fixed following things:
>>> - Initialization of sg table in bpf_tcp_sendpage() was missing,
>>> initialized it using sg_init_table()
>>>
>>> - bpf_tcp_sendmsg() initializes sg table using sg_init_table() before
>>> entering the loop, but further consumed sg entries are initialized
>>> using memset. Fixed it by replacing memset with sg_init_table() in
>>> function bpf_tcp_push()
>>>
>>> Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
>>> ---
>>> kernel/bpf/sockmap.c | 11 +++++++----
>>> 1 file changed, 7 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/kernel/bpf/sockmap.c b/kernel/bpf/sockmap.c
>>> index 69c5bccabd22..8a848a99d768 100644
>>> --- a/kernel/bpf/sockmap.c
>>> +++ b/kernel/bpf/sockmap.c
>>> @@ -312,7 +312,7 @@ static int bpf_tcp_push(struct sock *sk, int apply_bytes,
>>> md->sg_start++;
>>> if (md->sg_start == MAX_SKB_FRAGS)
>>> md->sg_start = 0;
>>> - memset(sg, 0, sizeof(*sg));
>>> + sg_init_table(sg, 1);
>>
>> Looks OK here.
>>
>>> if (md->sg_start == md->sg_end)
>>> break;
>>> @@ -763,10 +763,14 @@ static int bpf_tcp_sendpage(struct sock *sk, struct page *page,
>>> lock_sock(sk);
>>> - if (psock->cork_bytes)
>>> + if (psock->cork_bytes) {
>>> m = psock->cork;
>>> - else
>>> + sg = &m->sg_data[m->sg_end];
>>> + } else {
>>> m = &md;
>>> + sg = m->sg_data;
>>> + sg_init_table(sg, MAX_SKB_FRAGS);
>>
>> sg_init_table() does an unnecessary memset() though. We
>> probably either want a new scatterlist API or just open
>> code this,
>>
>> #ifdef CONFIG_DEBUG_SG
>> {
>> unsigned int i;
>> for (i = 0; i < nents; i++)
>> sgl[i].sg_magic = SG_MAGIC;
>> }
>
> Similar sg_init_table() is present in bpf_tcp_sendmsg().
> I agree that it causes unnecessary memset, but I don't agree with open coded fix.
But then lets fix is properly and add a static inline helper to the
include/linux/scatterlist.h header like ...
static inline void sg_init_debug_marker(struct scatterlist *sgl,
unsigned int nents)
{
#ifdef CONFIG_DEBUG_SG
unsigned int i;
for (i = 0; i < nents; i++)
sgl[i].sg_magic = SG_MAGIC;
#endif
}
... and reuse it in all the places that would otherwise open-code this,
as well as sg_init_table():
void sg_init_table(struct scatterlist *sgl, unsigned int nents)
{
memset(sgl, 0, sizeof(*sgl) * nents);
sg_init_debug_marker(sgl, nents);
sg_mark_end(&sgl[nents - 1]);
}
This would be a lot cleaner than having this duplicated in various places.
Thanks,
Daniel
^ permalink raw reply
* Re: rtlwifi: rtl8821ae: fix spelling mistake: "Aboslute" -> "Absolute"
From: Kalle Valo @ 2018-03-27 9:03 UTC (permalink / raw)
To: Colin Ian King
Cc: Ping-Ke Shih, Tsang-Shian Lin, Larry Finger, linux-wireless,
netdev, kernel-janitors, linux-kernel
In-Reply-To: <20180319104054.32564-1-colin.king@canonical.com>
Colin Ian King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Trivial fix to spelling mistake in RT_TRACE message text.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> Acked-by: Larry Finger <Larry.Finger@lwfinger.net?
Patch applied to wireless-drivers-next.git, thanks.
e153292ae4d1 rtlwifi: rtl8821ae: fix spelling mistake: "Aboslute" -> "Absolute"
--
https://patchwork.kernel.org/patch/10292111/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [PATCH 4/4] selftests/bpf: fix compiling errors
From: Du, Changbin @ 2018-03-27 9:00 UTC (permalink / raw)
To: Daniel Borkmann
Cc: Du, Changbin, Alexei Starovoitov, shuah, linux-kselftest,
linux-kernel, netdev
In-Reply-To: <2dd7c04a-eb10-e730-148e-3b04a18e9b44@iogearbox.net>
On Tue, Mar 27, 2018 at 10:52:57AM +0200, Daniel Borkmann wrote:
> On 03/27/2018 05:06 AM, Du, Changbin wrote:
> > On Mon, Mar 26, 2018 at 08:02:30PM -0700, Alexei Starovoitov wrote:
> >> On Tue, Mar 27, 2018 at 10:20:10AM +0800, Du, Changbin wrote:
> >>> On Mon, Mar 26, 2018 at 07:55:13AM -0700, Alexei Starovoitov wrote:
> >>>> On Mon, Mar 26, 2018 at 05:23:28PM +0800, changbin.du@intel.com wrote:
> >>>>> Signed-off-by: Changbin Du <changbin.du@intel.com>
> >>>>> ---
> >>>>> tools/testing/selftests/bpf/Makefile | 5 +++--
> >>>>> 1 file changed, 3 insertions(+), 2 deletions(-)
> >>>>>
> >>>>> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
> >>>>> index 5c43c18..dc0fdc8 100644
> >>>>> --- a/tools/testing/selftests/bpf/Makefile
> >>>>> +++ b/tools/testing/selftests/bpf/Makefile
> >>>>> @@ -10,7 +10,8 @@ ifneq ($(wildcard $(GENHDR)),)
> >>>>> GENFLAGS := -DHAVE_GENHDR
> >>>>> endif
> >>>>>
> >>>>> -CFLAGS += -Wall -O2 -I$(APIDIR) -I$(LIBDIR) -I$(GENDIR) $(GENFLAGS) -I../../../include
> >>>>> +CFLAGS += -Wall -O2 -I$(APIDIR) -I$(LIBDIR) -I$(GENDIR) $(GENFLAGS) \
> >>>>> + -I../../../include -I../../../../usr/include
> >>>>> LDLIBS += -lcap -lelf -lrt -lpthread
> >>>>>
> >>>>> # Order correspond to 'make run_tests' order
> >>>>> @@ -62,7 +63,7 @@ else
> >>>>> CPU ?= generic
> >>>>> endif
> >>>>>
> >>>>> -CLANG_FLAGS = -I. -I./include/uapi -I../../../include/uapi \
> >>>>> +CLANG_FLAGS = -I. -I./include/uapi -I../../../include/uapi -I../../../../usr/include \
> >>>>> -Wno-compare-distinct-pointer-types
> >>>>
> >>>> Nack.
> >>>> I suspect that will break the build for everyone else who's doing it in the directory
> >>>> itself instead of the outer one.
> >>>
> >>> This one? But I didn't see any problem.
> >>
> >> because the build was lucky and additional path ../../../../usr/include didn't point
> >> to a valid dir?
>
> Agree.
>
> > I am sorry but I don't understand why you mean *lucky*. Of cause, the path is valid.
>
> The problem is that this suddenly requires users to do a 'make headers_install' in
> order to populate usr/include/ directory in the first place. While it's annoying
> enough for BPF samples where this is needed, I absolutely don't want to introduce
> this for BPF kselftests. It's the wrong approach. Besides, in tools infra, there is
> a tools/arch/*/include/uapi/asm/bitsperlong.h header copy already, so we really need
> to use that instead. Please adapt your patch accordingly and respin. Please also Cc
> us and netdev@vger.kernel.org for BPF kselftests changes.
>
> Thanks,
> Daniel
Thanks for the explanation. So we expect that tools/arch/*/include is in the searching list, right?
The corrent makefile seems not. How do you get this built?
changbin@gvt-dell-host:~/work/linux/tools/testing/selftests/bpf$ make -p
[...]
clang -I. -I./include/uapi -I../../../include/uapi -Wno-compare-distinct-pointer-types \
-O2 -target bpf -emit-llvm -c test_pkt_access.c -o - | \
llc -march=bpf -mcpu=generic -filetype=obj -o /home/changbin/work/linux/tools/testing/selftests/bpf/test_pkt_access.o
In file included from test_pkt_access.c:9:
In file included from ../../../include/uapi/linux/bpf.h:11:
In file included from ./include/uapi/linux/types.h:5:
/usr/include/asm-generic/int-ll64.h:11:10: fatal error: 'asm/bitsperlong.h' file not found
#include <asm/bitsperlong.h>
--
Thanks,
Changbin Du
^ permalink raw reply
* Re: [next] rsi: remove redundant duplicate assignment of buffer_size
From: Kalle Valo @ 2018-03-27 8:53 UTC (permalink / raw)
To: Colin Ian King
Cc: Amitkumar Karwar, Prameela Rani Garnepudi, linux-wireless, netdev,
kernel-janitors, linux-kernel
In-Reply-To: <20180314141239.8321-1-colin.king@canonical.com>
Colin Ian King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Variable buffer_size is re-assigned the same value, this duplicated
> assignment is redundant and can be removed.
>
> Cleans up clang warning:
> drivers/net/wireless/rsi/rsi_91x_usb.c:140:4: warning: Value stored
> to 'buffer_size' is never read
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
Patch applied to wireless-drivers-next.git, thanks.
a31f9314114c rsi: remove redundant duplicate assignment of buffer_size
--
https://patchwork.kernel.org/patch/10282247/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [PATCH 4/4] selftests/bpf: fix compiling errors
From: Daniel Borkmann @ 2018-03-27 8:52 UTC (permalink / raw)
To: Du, Changbin, Alexei Starovoitov
Cc: shuah, linux-kselftest, linux-kernel, netdev
In-Reply-To: <20180327030613.hkp7hox3g4prnbsg@intel.com>
On 03/27/2018 05:06 AM, Du, Changbin wrote:
> On Mon, Mar 26, 2018 at 08:02:30PM -0700, Alexei Starovoitov wrote:
>> On Tue, Mar 27, 2018 at 10:20:10AM +0800, Du, Changbin wrote:
>>> On Mon, Mar 26, 2018 at 07:55:13AM -0700, Alexei Starovoitov wrote:
>>>> On Mon, Mar 26, 2018 at 05:23:28PM +0800, changbin.du@intel.com wrote:
>>>>> Signed-off-by: Changbin Du <changbin.du@intel.com>
>>>>> ---
>>>>> tools/testing/selftests/bpf/Makefile | 5 +++--
>>>>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
>>>>> index 5c43c18..dc0fdc8 100644
>>>>> --- a/tools/testing/selftests/bpf/Makefile
>>>>> +++ b/tools/testing/selftests/bpf/Makefile
>>>>> @@ -10,7 +10,8 @@ ifneq ($(wildcard $(GENHDR)),)
>>>>> GENFLAGS := -DHAVE_GENHDR
>>>>> endif
>>>>>
>>>>> -CFLAGS += -Wall -O2 -I$(APIDIR) -I$(LIBDIR) -I$(GENDIR) $(GENFLAGS) -I../../../include
>>>>> +CFLAGS += -Wall -O2 -I$(APIDIR) -I$(LIBDIR) -I$(GENDIR) $(GENFLAGS) \
>>>>> + -I../../../include -I../../../../usr/include
>>>>> LDLIBS += -lcap -lelf -lrt -lpthread
>>>>>
>>>>> # Order correspond to 'make run_tests' order
>>>>> @@ -62,7 +63,7 @@ else
>>>>> CPU ?= generic
>>>>> endif
>>>>>
>>>>> -CLANG_FLAGS = -I. -I./include/uapi -I../../../include/uapi \
>>>>> +CLANG_FLAGS = -I. -I./include/uapi -I../../../include/uapi -I../../../../usr/include \
>>>>> -Wno-compare-distinct-pointer-types
>>>>
>>>> Nack.
>>>> I suspect that will break the build for everyone else who's doing it in the directory
>>>> itself instead of the outer one.
>>>
>>> This one? But I didn't see any problem.
>>
>> because the build was lucky and additional path ../../../../usr/include didn't point
>> to a valid dir?
Agree.
> I am sorry but I don't understand why you mean *lucky*. Of cause, the path is valid.
The problem is that this suddenly requires users to do a 'make headers_install' in
order to populate usr/include/ directory in the first place. While it's annoying
enough for BPF samples where this is needed, I absolutely don't want to introduce
this for BPF kselftests. It's the wrong approach. Besides, in tools infra, there is
a tools/arch/*/include/uapi/asm/bitsperlong.h header copy already, so we really need
to use that instead. Please adapt your patch accordingly and respin. Please also Cc
us and netdev@vger.kernel.org for BPF kselftests changes.
Thanks,
Daniel
^ permalink raw reply
* Re: [PATCH net-next nfs 1/6] net: Convert rpcsec_gss_net_ops
From: Kirill Tkhai @ 2018-03-27 8:52 UTC (permalink / raw)
To: J. Bruce Fields, Anna Schumaker
Cc: davem, trond.myklebust, jlayton, dhowells, keescook, dwindsor,
ishkamiel, elena.reshetova, linux-nfs, linux-afs, netdev
In-Reply-To: <20180326183659.GA25744@fieldses.org>
On 26.03.2018 21:36, J. Bruce Fields wrote:
> On Fri, Mar 23, 2018 at 02:53:34PM -0400, Anna Schumaker wrote:
>>
>>
>> On 03/13/2018 06:49 AM, Kirill Tkhai wrote:
>>> These pernet_operations initialize and destroy sunrpc_net_id refered
>>> per-net items. Only used global list is cache_list, and accesses
>>> already serialized.
>>>
>>> sunrpc_destroy_cache_detail() check for list_empty() without
>>> cache_list_lock, but when it's called from
>>> unregister_pernet_subsys(), there can't be callers in parallel, so
>>> we won't miss list_empty() in this case.
>>>
>>> Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
>>
>> It might make sense to take these and the other NFS patches through
>> the net tree, since the pernet_operations don't yet have the async
>> field in my tree (and I therefore can't compile once these are
>> applied).
>
> Ditto for the nfsd patch, so, for what it's worth:
>
> Acked-by: J. Bruce Fields <bfields@redhat.com>
>
> for that patch.--b.
Thanks, Bruce.
Kirill
^ permalink raw reply
* [PATCH net 0/1] net/smc: fix clc problem
From: Ursula Braun @ 2018-03-27 8:43 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-s390, schwidefsky, heiko.carstens, raspl, ubraun
Dave,
the conversion from kernel_recvmsg() to sock_recvmsg() introduced a
problem for SMC. This patch fixes it.
Thanks, Ursula
Ursula Braun (1):
net/smc: use announced length in sock_recvmsg()
net/smc/smc_clc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--
2.13.5
^ permalink raw reply
* [PATCH net 1/1] net/smc: use announced length in sock_recvmsg()
From: Ursula Braun @ 2018-03-27 8:43 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-s390, schwidefsky, heiko.carstens, raspl, ubraun
In-Reply-To: <20180327084350.92847-1-ubraun@linux.vnet.ibm.com>
Not every CLC proposal message needs the maximum buffer length.
Due to the MSG_WAITALL flag, it is important to use the peeked
real length when receiving the message.
Fixes: d63d271ce2b5ce ("smc: switch to sock_recvmsg()")
Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
---
net/smc/smc_clc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/smc/smc_clc.c b/net/smc/smc_clc.c
index 8ac51583a063..15c213250606 100644
--- a/net/smc/smc_clc.c
+++ b/net/smc/smc_clc.c
@@ -133,7 +133,7 @@ int smc_clc_wait_msg(struct smc_sock *smc, void *buf, int buflen,
/* receive the complete CLC message */
memset(&msg, 0, sizeof(struct msghdr));
- iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, buflen);
+ iov_iter_kvec(&msg.msg_iter, READ | ITER_KVEC, &vec, 1, datlen);
krflags = MSG_WAITALL;
smc->clcsock->sk->sk_rcvtimeo = CLC_WAIT_TIME;
len = sock_recvmsg(smc->clcsock, &msg, krflags);
--
2.13.5
^ permalink raw reply related
* Re: [PATCH bpf-next] bpf: sockmap: initialize sg table entries properly
From: Prashant Bhole @ 2018-03-27 8:41 UTC (permalink / raw)
To: John Fastabend
Cc: Daniel Borkmann, Alexei Starovoitov, David S . Miller, netdev
In-Reply-To: <dd0531c0-9216-89db-6752-213401392705@gmail.com>
On 3/27/2018 12:15 PM, John Fastabend wrote:
> On 03/25/2018 11:54 PM, Prashant Bhole wrote:
>> When CONFIG_DEBUG_SG is set, sg->sg_magic is initialized to SG_MAGIC,
>> when sg table is initialized using sg_init_table(). Magic is checked
>> while navigating the scatterlist. We hit BUG_ON when magic check is
>> failed.
>>
>> Fixed following things:
>> - Initialization of sg table in bpf_tcp_sendpage() was missing,
>> initialized it using sg_init_table()
>>
>> - bpf_tcp_sendmsg() initializes sg table using sg_init_table() before
>> entering the loop, but further consumed sg entries are initialized
>> using memset. Fixed it by replacing memset with sg_init_table() in
>> function bpf_tcp_push()
>>
>> Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
>> ---
>> kernel/bpf/sockmap.c | 11 +++++++----
>> 1 file changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/kernel/bpf/sockmap.c b/kernel/bpf/sockmap.c
>> index 69c5bccabd22..8a848a99d768 100644
>> --- a/kernel/bpf/sockmap.c
>> +++ b/kernel/bpf/sockmap.c
>> @@ -312,7 +312,7 @@ static int bpf_tcp_push(struct sock *sk, int apply_bytes,
>> md->sg_start++;
>> if (md->sg_start == MAX_SKB_FRAGS)
>> md->sg_start = 0;
>> - memset(sg, 0, sizeof(*sg));
>> + sg_init_table(sg, 1);
>
> Looks OK here.
>
>>
>> if (md->sg_start == md->sg_end)
>> break;
>> @@ -763,10 +763,14 @@ static int bpf_tcp_sendpage(struct sock *sk, struct page *page,
>>
>> lock_sock(sk);
>>
>> - if (psock->cork_bytes)
>> + if (psock->cork_bytes) {
>> m = psock->cork;
>> - else
>> + sg = &m->sg_data[m->sg_end];
>> + } else {
>> m = &md;
>> + sg = m->sg_data;
>> + sg_init_table(sg, MAX_SKB_FRAGS);
>
> sg_init_table() does an unnecessary memset() though. We
> probably either want a new scatterlist API or just open
> code this,
>
> #ifdef CONFIG_DEBUG_SG
> {
> unsigned int i;
> for (i = 0; i < nents; i++)
> sgl[i].sg_magic = SG_MAGIC;
> }
Similar sg_init_table() is present in bpf_tcp_sendmsg().
I agree that it causes unnecessary memset, but I don't agree with open
coded fix.
I am still with V1. Thanks.
-Prashant
^ permalink raw reply
* Re: [net-next 03/15] net/mlx5e: PFC stall prevention support
From: Gal Pressman @ 2018-03-27 8:38 UTC (permalink / raw)
To: Andrew Lunn; +Cc: Saeed Mahameed, David S. Miller, netdev, Inbar Karmy
In-Reply-To: <20180325161815.GB12820@lunn.ch>
On 25-Mar-18 19:18, Andrew Lunn wrote:
>>> Shouldn't you map a value of MLX5E_PFC_PREVEN_AUTO_TOUT_MSEC back to
>>> PFC_STORM_PREVENTION_AUTO?
>>
>> We discussed this point internally, mapping MLX5E_PFC_PREVEN_AUTO_TOUT_MSEC (100) to
>> PFC_STORM_PREVENTION_AUTO might cause confusion when the user explicitly asks for 100msec timeout
>> and gets auto in his following query.
>> Also, this way the "auto" timeout is visible to the user, which might help him get an initial
>> clue of which values are recommended.
>
> Yes, this is a fair point, which is why i asked the question. Either
> way, it can cause confusion. 'I configured it to auto, but it always
> returns 100, not auto.'
>
> Whatever is decided, it should be consistent across drivers. So please
> add some documentation to the ethtool header file about what is
> expected.
We didn't want to limit other drivers implementation, but I agree that
consistency across drivers is important in this case.
We will find a proper place to document it.
>
> Andrew
>
^ permalink raw reply
* RE: [RFC PATCH v2] net: phy: Added device tree binding for dev-addr and dev-addr code check-up
From: Vicenţiu Galanopulo @ 2018-03-27 8:10 UTC (permalink / raw)
To: Rob Herring
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
mark.rutland@arm.com, davem@davemloft.net, marcel@holtmann.org,
devicetree@vger.kernel.org, Madalin-cristian Bucur,
Alexandru Marginean
In-Reply-To: <20180326222509.ppt5aqzqdarhm44d@rob-hp-laptop>
> -----Original Message-----
> From: Rob Herring [mailto:robh@kernel.org]
> Sent: Tuesday, March 27, 2018 1:25 AM
> To: Vicenţiu Galanopulo <vicentiu.galanopulo@nxp.com>
> Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org;
> mark.rutland@arm.com; davem@davemloft.net; marcel@holtmann.org;
> devicetree@vger.kernel.org; Madalin-cristian Bucur <madalin.bucur@nxp.com>;
> Alexandru Marginean <alexandru.marginean@nxp.com>
> Subject: Re: [RFC PATCH v2] net: phy: Added device tree binding for dev-addr
> and dev-addr code check-up
>
> On Fri, Mar 23, 2018 at 10:05:22AM -0500, Vicentiu Galanopulo wrote:
> > Reason for this patch is that the Inphi PHY has a vendor specific
> > address space for accessing the
> > C45 MDIO registers - starting from 0x1e.
> >
> > A search of the dev-addr property is done in of_mdiobus_register.
> > If the property is found in the PHY node,
> > of_mdiobus_register_static_phy is called. This is a wrapper function
> > for of_mdiobus_register_phy which finds the device in package based on
> > dev-addr and fills devices_addrs:
> > devices_addrs is a new field added to phy_c45_device_ids.
> > This new field will store the dev-addr property on the same index
> > where the device in package has been found.
> > In order to have dev-addr in get_phy_c45_ids(), mdio_c45_ids is passed
> > from of_mdio.c to phy_device.c as an external variable.
> > In get_phy_device a copy of the mdio_c45_ids is done over the local
> > c45_ids (wich are empty). After the copying, the c45_ids will also
> > contain the static device found from dev-addr.
> > Having dev-addr stored in devices_addrs, in get_phy_c45_ids(), when
> > probing the identifiers, dev-addr can be extracted from devices_addrs
> > and probed if devices_addrs[current_identifier] is not 0.
> > This way changing the kernel API is avoided completely.
> >
> > As a plus to this patch, num_ids in get_phy_c45_ids, has the value 8
> > (ARRAY_SIZE(c45_ids->device_ids)),
> > but the u32 *devs can store 32 devices in the bitfield.
> > If a device is stored in *devs, in bits 32 to 9, it will not be found.
> > This is the reason for changing in phy.h, the size of device_ids
> > array.
> >
> > Signed-off-by: Vicentiu Galanopulo <vicentiu.galanopulo@nxp.com>
> > ---
> > Documentation/devicetree/bindings/net/phy.txt | 6 ++
>
> Please split bindings to separate patch.
Thanks Rob for your comments. I was considering doing that after I reach a more stable, non-RFC version of the patch. I also added a v3, before
your comments, I think... so in the next one, v4, I will split the binding to a separate patch.
>
> > drivers/net/phy/phy_device.c | 22 +++++-
> > drivers/of/of_mdio.c | 98 ++++++++++++++++++++++++++-
> > include/linux/phy.h | 5 +-
> > 4 files changed, 125 insertions(+), 6 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/net/phy.txt
> > b/Documentation/devicetree/bindings/net/phy.txt
> > index d2169a5..82692e2 100644
> > --- a/Documentation/devicetree/bindings/net/phy.txt
> > +++ b/Documentation/devicetree/bindings/net/phy.txt
> > @@ -61,6 +61,11 @@ Optional Properties:
> > - reset-deassert-us: Delay after the reset was deasserted in microseconds.
> > If this property is missing the delay will be skipped.
> >
> > +- dev-addr: If set, it indicates the device address of the PHY to be
> > +used
> > + when accessing the C45 PHY registers over MDIO. It is used for
> > +vendor specific
> > + register space addresses that do no conform to standard address for
> > +the MDIO
> > + registers (e.g. MMD30)
>
> This is a 2nd MDIO address, right? Can't you just append this to reg property?
>
> Rob
Yes, it is a 2nd MDIO address which is coming from the PHY vendor. This address cannot be obtained by querying the MDIO bus, it's specified in the PHY datasheet. The current kernel implementation was relying on the fact that this address is in the decimal 0 to 7 range. That worked for the PHYs which already have a kernel driver, but for the new Inphi PHY, which I'm trying to add, it didn't.
If I were to append the dev-addr address to the reg property, I would have to fit two 32bit variable into a single one... in my opinion the code is clearer having the two addresses as distinct variables.... And so far, the comments from Andrew or Florian didn't go in this direction..
Vicentiu
^ permalink raw reply
* Re: [v2] rsi: Remove stack VLA usage
From: Kalle Valo @ 2018-03-27 8:04 UTC (permalink / raw)
To: Tobin C. Harding
Cc: Tobin C. Harding, kernel-hardening, linux-kernel, netdev,
linux-wireless, Tycho Andersen, Kees Cook, Larry Finger
In-Reply-To: <1521081085-16404-1-git-send-email-me@tobin.cc>
"Tobin C. Harding" <me@tobin.cc> wrote:
> The use of stack Variable Length Arrays needs to be avoided, as they
> can be a vector for stack exhaustion, which can be both a runtime bug
> (kernel Oops) or a security flaw (overwriting memory beyond the
> stack). Also, in general, as code evolves it is easy to lose track of
> how big a VLA can get. Thus, we can end up having runtime failures
> that are hard to debug. As part of the directive[1] to remove all VLAs
> from the kernel, and build with -Wvla.
>
> Currently rsi code uses a VLA based on a function argument to
> `rsi_sdio_load_data_master_write()`. The function call chain is
>
> Both these functions
>
> rsi_sdio_reinit_device()
> rsi_probe()
>
> start the call chain:
>
> rsi_hal_device_init()
> rsi_load_fw()
> auto_fw_upgrade()
> ping_pong_write()
> rsi_sdio_load_data_master_write()
>
> [Without familiarity with the code] it appears that none of the 4 locks
>
> mutex
> rx_mutex
> tx_mutex
> tx_bus_mutex
>
> are held when `rsi_sdio_load_data_master_write()` is called. It is therefore
> safe to use kmalloc with GFP_KERNEL.
>
> We can avoid using the VLA by using `kmalloc()` and free'ing the memory on all
> exit paths.
>
> Change buffer from 'u8 array' to 'u8 *'. Call `kmalloc()` to allocate memory for
> the buffer. Using goto statement to call `kfree()` on all return paths.
>
> It can be expected that this patch will result in a small increase in overhead
> due to the use of `kmalloc()` however this code is only called on initialization
> (and re-initialization) so this overhead should not degrade performance.
>
> [1] https://lkml.org/lkml/2018/3/7/621
>
> Signed-off-by: Tobin C. Harding <me@tobin.cc>
Patch applied to wireless-drivers-next.git, thanks.
44f98a9332e4 rsi: Remove stack VLA usage
--
https://patchwork.kernel.org/patch/10283841/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [v2] rsi: Remove stack VLA usage
From: Kalle Valo @ 2018-03-27 8:04 UTC (permalink / raw)
To: Tobin C. Harding
Cc: Tobin C. Harding, kernel-hardening, linux-kernel, netdev,
linux-wireless, Tycho Andersen, Kees Cook, Larry Finger
In-Reply-To: <1521081085-16404-1-git-send-email-me@tobin.cc>
"Tobin C. Harding" <me@tobin.cc> wrote:
> The use of stack Variable Length Arrays needs to be avoided, as they
> can be a vector for stack exhaustion, which can be both a runtime bug
> (kernel Oops) or a security flaw (overwriting memory beyond the
> stack). Also, in general, as code evolves it is easy to lose track of
> how big a VLA can get. Thus, we can end up having runtime failures
> that are hard to debug. As part of the directive[1] to remove all VLAs
> from the kernel, and build with -Wvla.
>
> Currently rsi code uses a VLA based on a function argument to
> `rsi_sdio_load_data_master_write()`. The function call chain is
>
> Both these functions
>
> rsi_sdio_reinit_device()
> rsi_probe()
>
> start the call chain:
>
> rsi_hal_device_init()
> rsi_load_fw()
> auto_fw_upgrade()
> ping_pong_write()
> rsi_sdio_load_data_master_write()
>
> [Without familiarity with the code] it appears that none of the 4 locks
>
> mutex
> rx_mutex
> tx_mutex
> tx_bus_mutex
>
> are held when `rsi_sdio_load_data_master_write()` is called. It is therefore
> safe to use kmalloc with GFP_KERNEL.
>
> We can avoid using the VLA by using `kmalloc()` and free'ing the memory on all
> exit paths.
>
> Change buffer from 'u8 array' to 'u8 *'. Call `kmalloc()` to allocate memory for
> the buffer. Using goto statement to call `kfree()` on all return paths.
>
> It can be expected that this patch will result in a small increase in overhead
> due to the use of `kmalloc()` however this code is only called on initialization
> (and re-initialization) so this overhead should not degrade performance.
>
> [1] https://lkml.org/lkml/2018/3/7/621
>
> Signed-off-by: Tobin C. Harding <me@tobin.cc>
Patch applied to wireless-drivers-next.git, thanks.
44f98a9332e4 rsi: Remove stack VLA usage
--
https://patchwork.kernel.org/patch/10283841/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [2/4] wireless: Use octal not symbolic permissions
From: Kalle Valo @ 2018-03-27 8:02 UTC (permalink / raw)
To: Joe Perches
Cc: Jiri Slaby, Nick Kossifidis, Luis R. Rodriguez, Kalle Valo,
QCA ath9k Development, Christian Lamparter, Eugene Krasnikov,
Stanislav Yakovlev, Stanislaw Gruszka, Johannes Berg,
Emmanuel Grumbach, Luca Coelho, Intel Linux Wireless,
Jakub Kicinski, Helmut Schaa, Solomon Peachy, Matthias Brugger,
Arend van Spriel
In-Reply-To: <a368e1c4878619172f3da4849cb211b4dfad0a58.1521845237.git.joe@perches.com>
Joe Perches <joe@perches.com> wrote:
> Prefer the direct use of octal for permissions.
>
> Done with checkpatch -f --types=SYMBOLIC_PERMS --fix-inplace
> and some typing.
>
> Miscellanea:
>
> o Whitespace neatening around these conversions.
>
> Signed-off-by: Joe Perches <joe@perches.com>
Patch applied to wireless-drivers-next.git, thanks.
2ef00c53049b wireless: Use octal not symbolic permissions
--
https://patchwork.kernel.org/patch/10305719/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [2/4] wireless: Use octal not symbolic permissions
From: Kalle Valo @ 2018-03-27 8:02 UTC (permalink / raw)
To: Joe Perches
Cc: Emmanuel Grumbach, Stanislaw Gruszka, Jiri Slaby, Chi-Hsien Lin,
Helmut Schaa, Kalle Valo, Luca Coelho, Solomon Peachy,
Christian Lamparter, wcn36xx, brcm80211-dev-list, Jakub Kicinski,
Nick Kossifidis, Stanislav Yakovlev, Arend van Spriel,
Johannes Berg, Intel Linux Wireless, Hante Meuleman,
linux-mediatek, Wright Feng, Matthias Brugger, linux-arm-kernel
In-Reply-To: <a368e1c4878619172f3da4849cb211b4dfad0a58.1521845237.git.joe@perches.com>
Joe Perches <joe@perches.com> wrote:
> Prefer the direct use of octal for permissions.
>
> Done with checkpatch -f --types=SYMBOLIC_PERMS --fix-inplace
> and some typing.
>
> Miscellanea:
>
> o Whitespace neatening around these conversions.
>
> Signed-off-by: Joe Perches <joe@perches.com>
Patch applied to wireless-drivers-next.git, thanks.
2ef00c53049b wireless: Use octal not symbolic permissions
--
https://patchwork.kernel.org/patch/10305719/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [v3] Bluetooth: btrsi: rework dependencies
From: Kalle Valo @ 2018-03-27 7:12 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Arnd Bergmann, Marcel Holtmann, Johan Hedberg, Johan Hovold,
Amitkumar Karwar, Siva Rebbagondla, linux-bluetooth, linux-kernel,
linux-wireless, netdev
In-Reply-To: <20180315211904.2256817-1-arnd@arndb.de>
Arnd Bergmann <arnd@arndb.de> wrote:
> The linkage between the bluetooth driver and the wireless
> driver is not defined properly, leading to build problems
> such as:
>
> warning: (BT_HCIRSI) selects RSI_COEX which has unmet direct dependencies (NETDEVICES && WLAN && WLAN_VENDOR_RSI && BT_HCIRSI && RSI_91X)
> drivers/net/wireless/rsi/rsi_91x_main.o: In function `rsi_read_pkt':
> (.text+0x205): undefined reference to `rsi_bt_ops'
>
> As the dependency is actually the reverse (RSI_91X uses
> the BT_RSI driver, not the other way round), this changes
> the dependency to match, and enables the bluetooth driver
> from the RSI_COEX symbol.
>
> Fixes: 38aa4da50483 ("Bluetooth: btrsi: add new rsi bluetooth driver")
> Acked-by; Marcel Holtmann <marcel@holtmann.org>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Patch applied to wireless-drivers-next.git, thanks.
255dd5b79d54 Bluetooth: btrsi: rework dependencies
--
https://patchwork.kernel.org/patch/10285795/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply
* Re: [RFC PATCH 00/24] Introducing AF_XDP support
From: Björn Töpel @ 2018-03-27 6:30 UTC (permalink / raw)
To: Alexander Duyck
Cc: Tushar Dave, Jesper Dangaard Brouer, William Tu, Karlsson, Magnus,
Alexander Duyck, John Fastabend, Alexei Starovoitov,
Willem de Bruijn, Daniel Borkmann,
Linux Kernel Network Developers, Björn Töpel,
michael.lundkvist, Brandeburg, Jesse, Anjali Singhai Jain,
Shaw, Jeffrey B, Yigit, Ferruh, Zhang, Qi Z
In-Reply-To: <CAKgT0Ufya10bXa4BXFbR2GtwZM6i7x8LPYoodFPZ82=S+t7x2w@mail.gmail.com>
2018-03-27 1:03 GMT+02:00 Alexander Duyck <alexander.duyck@gmail.com>:
> On Mon, Mar 26, 2018 at 3:54 PM, Tushar Dave <tushar.n.dave@oracle.com> wrote:
[...]
>>
>> Whats the implication here. Should IOMMU be disabled?
>> I'm asking because I do see a huge difference while running pktgen test for
>> my performance benchmarks, with and without intel_iommu.
>>
>>
>> -Tushar
>
> For the Intel parts the IOMMU can be expensive primarily for Tx, since
> it should have minimal impact if the Rx pages are pinned/recycled. I
> am assuming the same is true here for AF_XDP, Bjorn can correct me if
> I am wrong.
>
For the non-zc case the DMA mapping is done in the Tx fast path, so
there, as Alex says, you'll definitely see a performance penalty. For
Rx the page-recycle mechanism (Intel drivers) usally avoids doing any
DMA mappings in the fast-path.
As for AF_XDP zerocopy mode, we do the DMA mapping up front (avoiding
the single-use mappings), to avoid that performance hit. Keep in mind,
though, that the IOTLB is still in play, and usually performs worse
under pressure, than the non-IOMMU case.
> Basically the IOMMU can make creating/destroying a DMA mapping really
> expensive. The easiest way to work around it in the case of the Intel
> IOMMU is to boot with "iommu=pt" which will create an identity mapping
> for the host. The downside is though that you then have the entire
> system accessible to the device unless a new mapping is created for it
> by assigning it to a new IOMMU domain.
>
> Thanks.
>
> - Alex
^ permalink raw reply
* Re: [RFC PATCH 00/24] Introducing AF_XDP support
From: Björn Töpel @ 2018-03-27 6:09 UTC (permalink / raw)
To: William Tu
Cc: Jesper Dangaard Brouer, Karlsson, Magnus, Alexander Duyck,
Alexander Duyck, John Fastabend, Alexei Starovoitov,
Willem de Bruijn, Daniel Borkmann,
Linux Kernel Network Developers, Björn Töpel,
michael.lundkvist, Brandeburg, Jesse, Singhai, Anjali,
Shaw, Jeffrey B, Yigit, Ferruh, Zhang, Qi Z
In-Reply-To: <CALDO+SZcxks4xF-YZEJe3dL2sp9wR7kWYCnAnokhr-y3f9-AeQ@mail.gmail.com>
2018-03-26 23:58 GMT+02:00 William Tu <u9012063@gmail.com>:
> Hi Jesper,
>
> Thanks a lot for your prompt reply.
>
>>> Hi,
>>> I also did an evaluation of AF_XDP, however the performance isn't as
>>> good as above.
>>> I'd like to share the result and see if there are some tuning suggestions.
>>>
>>> System:
>>> 16 core, Intel(R) Xeon(R) CPU E5-2440 v2 @ 1.90GHz
>>> Intel 10G X540-AT2 ---> so I can only run XDP_SKB mode
>>
>> Hmmm, why is X540-AT2 not able to use XDP natively?
>
> Because I'm only able to use ixgbe driver for this NIC,
> and AF_XDP patch only has i40e support?
>
It's only i40e that support zero copy. As for native XDP support, only
XDP_REDIRECT support is required and ixgbe does support XDP_REDIRECT
-- unfortunately, ixgbe still needs a needs a patch to work properly,
which is in net-next: ed93a3987128 ("ixgbe: tweak page counting for
XDP_REDIRECT").
>>
>>> AF_XDP performance:
>>> Benchmark XDP_SKB
>>> rxdrop 1.27 Mpps
>>> txpush 0.99 Mpps
>>> l2fwd 0.85 Mpps
>>
>> Definitely too low...
>>
> I did another run, the rxdrop seems better.
> Benchmark XDP_SKB
> rxdrop 2.3 Mpps
> txpush 1.05 Mpps
> l2fwd 0.90 Mpps
>
>> What is the performance if you drop packets via iptables?
>>
>> Command:
>> $ iptables -t raw -I PREROUTING -p udp --dport 9 --j DROP
>>
> I did
> # iptables -t raw -I PREROUTING -p udp -i enp10s0f0 -j DROP
> # iptables -nvL -t raw; sleep 10; iptables -nvL -t raw
>
> and I got 2.9Mpps.
>
>>> NIC configuration:
>>> the command
>>> "ethtool -N p3p2 flow-type udp4 src-port 4242 dst-port 4242 action 16"
>>> doesn't work on my ixgbe driver, so I use ntuple:
>>>
>>> ethtool -K enp10s0f0 ntuple on
>>> ethtool -U enp10s0f0 flow-type udp4 src-ip 10.1.1.100 action 1
>>> then
>>> echo 1 > /proc/sys/net/core/bpf_jit_enable
>>> ./xdpsock -i enp10s0f0 -r -S --queue=1
>>>
>>> I also take a look at perf result:
>>> For rxdrop:
>>> 86.56% xdpsock xdpsock [.] main
>>> 9.22% xdpsock [kernel.vmlinux] [k] nmi
>>> 4.23% xdpsock xdpsock [.] xq_enq
>>
>> It looks very strange that you see non-maskable interrupt's (NMI) being
>> this high...
>>
> yes, that's weird. Looking at the perf annotate of nmi,
> it shows 100% spent on nop instruction.
>
>>
>>> For l2fwd:
>>> 20.81% xdpsock xdpsock [.] main
>>> 10.64% xdpsock [kernel.vmlinux] [k] clflush_cache_range
>>
>> Oh, clflush_cache_range is being called!
>
> I though clflush_cache_range is high because we have many smp_rmb, smp_wmb
> in the xdpsock queue/ring management userspace code.
> (perf shows that 75% of this 10.64% spent on mfence instruction.)
>
>> Do your system use an IOMMU ?
>>
> Yes.
> With CONFIG_INTEL_IOMMU=y
> and I saw some related functions called (ex: intel_alloc_iova).
>
>>> 8.46% xdpsock [kernel.vmlinux] [k] xsk_sendmsg
>>> 6.72% xdpsock [kernel.vmlinux] [k] skb_set_owner_w
>>> 5.89% xdpsock [kernel.vmlinux] [k] __domain_mapping
>>> 5.74% xdpsock [kernel.vmlinux] [k] alloc_skb_with_frags
>>> 4.62% xdpsock [kernel.vmlinux] [k] netif_skb_features
>>> 3.96% xdpsock [kernel.vmlinux] [k] ___slab_alloc
>>> 3.18% xdpsock [kernel.vmlinux] [k] nmi
>>
>> Again high count for NMI ?!?
>>
>> Maybe you just forgot to tell perf that you want it to decode the
>> bpf_prog correctly?
>>
>> https://prototype-kernel.readthedocs.io/en/latest/bpf/troubleshooting.html#perf-tool-symbols
>>
>> Enable via:
>> $ sysctl net/core/bpf_jit_kallsyms=1
>>
>> And use perf report (while BPF is STILL LOADED):
>>
>> $ perf report --kallsyms=/proc/kallsyms
>>
>> E.g. for emailing this you can use this command:
>>
>> $ perf report --sort cpu,comm,dso,symbol --kallsyms=/proc/kallsyms --no-children --stdio -g none | head -n 40
>>
>
> Thanks, I followed the steps, the result of l2fwd
> # Total Lost Samples: 119
> #
> # Samples: 2K of event 'cycles:ppp'
> # Event count (approx.): 25675705627
> #
> # Overhead CPU Command Shared Object Symbol
> # ........ ... ....... .................. ..................................
> #
> 10.48% 013 xdpsock xdpsock [.] main
> 9.77% 013 xdpsock [kernel.vmlinux] [k] clflush_cache_range
> 8.45% 013 xdpsock [kernel.vmlinux] [k] nmi
> 8.07% 013 xdpsock [kernel.vmlinux] [k] xsk_sendmsg
> 7.81% 013 xdpsock [kernel.vmlinux] [k] __domain_mapping
> 4.95% 013 xdpsock [kernel.vmlinux] [k] ixgbe_xmit_frame_ring
> 4.66% 013 xdpsock [kernel.vmlinux] [k] skb_store_bits
> 4.39% 013 xdpsock [kernel.vmlinux] [k] syscall_return_via_sysret
> 3.93% 013 xdpsock [kernel.vmlinux] [k] pfn_to_dma_pte
> 2.62% 013 xdpsock [kernel.vmlinux] [k] __intel_map_single
> 2.53% 013 xdpsock [kernel.vmlinux] [k] __alloc_skb
> 2.36% 013 xdpsock [kernel.vmlinux] [k] iommu_no_mapping
> 2.21% 013 xdpsock [kernel.vmlinux] [k] alloc_skb_with_frags
> 2.07% 013 xdpsock [kernel.vmlinux] [k] skb_set_owner_w
> 1.98% 013 xdpsock [kernel.vmlinux] [k] __kmalloc_node_track_caller
> 1.94% 013 xdpsock [kernel.vmlinux] [k] ksize
> 1.84% 013 xdpsock [kernel.vmlinux] [k] validate_xmit_skb_list
> 1.62% 013 xdpsock [kernel.vmlinux] [k] kmem_cache_alloc_node
> 1.48% 013 xdpsock [kernel.vmlinux] [k] __kmalloc_reserve.isra.37
> 1.21% 013 xdpsock xdpsock [.] xq_enq
> 1.08% 013 xdpsock [kernel.vmlinux] [k] intel_alloc_iova
>
> And l2fwd under "perf stat" looks OK to me. There is little context
> switches, cpu
> is fully utilized, 1.17 insn per cycle seems ok.
>
> Performance counter stats for 'CPU(s) 6':
> 10000.787420 cpu-clock (msec) # 1.000 CPUs
> utilized
> 24 context-switches # 0.002 K/sec
> 0 cpu-migrations # 0.000 K/sec
> 0 page-faults # 0.000 K/sec
> 22,361,333,647 cycles # 2.236 GHz
> 13,458,442,838 stalled-cycles-frontend # 60.19% frontend
> cycles idle
> 26,251,003,067 instructions # 1.17 insn per
> cycle
> # 0.51 stalled
> cycles per insn
> 4,938,921,868 branches # 493.853 M/sec
> 7,591,739 branch-misses # 0.15% of all
> branches
> 10.000835769 seconds time elapsed
>
> Will continue investigate...
> Thanks
> William
^ permalink raw reply
* Re: [PATCH v3 iproute2-next 1/8] rdma: include rdma-core <rdma/rdma_cma.h>
From: Leon Romanovsky @ 2018-03-27 5:46 UTC (permalink / raw)
To: Steve Wise; +Cc: dsahern, stephen, netdev, linux-rdma
In-Reply-To: <326e72eaa0a6ed3d42aa857f13c80232a2550c77.1522097991.git.swise@opengridcomputing.com>
[-- Attachment #1: Type: text/plain, Size: 535 bytes --]
On Mon, Mar 26, 2018 at 01:57:32PM -0700, Steve Wise wrote:
> This avoids requiring rdma-core be installed on systems.
>
> Signed-off-by: Steve Wise <swise@opengridcomputing.com>
> ---
> rdma/include/rdma/rdma_cma.h | 728 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 728 insertions(+)
> create mode 100644 rdma/include/rdma/rdma_cma.h
>
Steve,
Sorry for not spotting it before, you actually need only 3 enums for the
cm_id_ps_to_str() from rdma_cma.h.
Simply copy/paste that enum into cm_id_ps_to_str().
Thanks
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH net-next] qed*: Utilize FW 8.33.11.0
From: kbuild test robot @ 2018-03-27 4:48 UTC (permalink / raw)
To: Michal Kalderon
Cc: kbuild-all, michal.kalderon, davem, netdev, linux-rdma,
linux-scsi, Tomer Tayar, Manish Rangankar, Ariel Elior
In-Reply-To: <1522083732-26560-1-git-send-email-Michal.Kalderon@cavium.com>
Hi Michal,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Michal-Kalderon/qed-Utilize-FW-8-33-11-0/20180327-070630
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/qlogic/qed/qed_cxt.c:972:41: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [unsigned] [usertype] next @@ got g long [unsigned] [usertype] next @@
drivers/net/ethernet/qlogic/qed/qed_cxt.c:972:41: expected unsigned long long [unsigned] [usertype] next
drivers/net/ethernet/qlogic/qed/qed_cxt.c:972:41: got restricted __be64 [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_cxt.c:979:33: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [unsigned] [usertype] next @@ got g long [unsigned] [usertype] next @@
drivers/net/ethernet/qlogic/qed/qed_cxt.c:979:33: expected unsigned long long [unsigned] [usertype] next
drivers/net/ethernet/qlogic/qed/qed_cxt.c:979:33: got restricted __be64 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_cxt.c:1534:6: sparse: symbol 'qed_cm_init_pf' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_cxt.c:2331:25: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_cxt.c:2331:25: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_cxt.c:2331:25: right side has type int
drivers/net/ethernet/qlogic/qed/qed_cxt.c:2331:25: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_cxt.c:2331:25: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_cxt.c:2331:25: right side has type unsigned long long
--
>> drivers/net/ethernet/qlogic/qed/qed_dev.c:233:4: sparse: symbol 'qed_init_qm_get_num_tcs' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_dev.c:238:5: sparse: symbol 'qed_init_qm_get_num_vfs' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_dev.c:246:5: sparse: symbol 'qed_init_qm_get_num_pf_rls' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_dev.c:264:5: sparse: symbol 'qed_init_qm_get_num_vports' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_dev.c:276:5: sparse: symbol 'qed_init_qm_get_num_pqs' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_dev.c:510:5: sparse: symbol 'qed_get_cm_pq_idx_rl' was not declared. Should it be static?
--
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:503:17: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:1228:6: sparse: symbol 'qed_set_gft_event_id_cm_hdr' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:1396:23: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:1396:23: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:1396:23: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:1396:23: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:1396:23: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c:1396:23: sparse: cast to restricted __be32
--
>> drivers/net/ethernet/qlogic/qed/qed_init_ops.c:238:33: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:239:20: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:252:16: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:309:20: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:325:24: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:329:24: sparse: cast to restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_init_ops.c:341:29: sparse: cast to restricted __le16
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:342:29: sparse: cast to restricted __le16
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:374:16: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:400:16: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:409:17: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:409:17: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:465:22: sparse: cast to restricted __le16
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:470:24: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:478:20: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:479:23: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:507:28: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:530:25: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:530:25: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:530:25: sparse: cast to restricted __le32
drivers/net/ethernet/qlogic/qed/qed_init_ops.c:530:25: sparse: cast to restricted __le32
--
>> drivers/net/ethernet/qlogic/qed/qed_int.c:1039:33: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] sb_id_and_flags @@ got [usertype] sb_id_and_flags @@
drivers/net/ethernet/qlogic/qed/qed_int.c:1039:33: expected restricted __le32 [usertype] sb_id_and_flags
drivers/net/ethernet/qlogic/qed/qed_int.c:1039:33: got unsigned int
>> drivers/net/ethernet/qlogic/qed/qed_int.c:1046:9: sparse: cast from restricted __le32
include/linux/qed/qed_if.h:969:33: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] sb_id_and_flags @@ got [usertype] sb_id_and_flags @@
include/linux/qed/qed_if.h:969:33: expected restricted __le32 [usertype] sb_id_and_flags
include/linux/qed/qed_if.h:969:33: got unsigned int
include/linux/qed/qed_if.h:976:9: sparse: cast from restricted __le32
include/linux/qed/qed_if.h:969:33: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] sb_id_and_flags @@ got [usertype] sb_id_and_flags @@
include/linux/qed/qed_if.h:969:33: expected restricted __le32 [usertype] sb_id_and_flags
include/linux/qed/qed_if.h:969:33: got unsigned int
include/linux/qed/qed_if.h:976:9: sparse: cast from restricted __le32
include/linux/qed/qed_if.h:969:33: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] sb_id_and_flags @@ got [usertype] sb_id_and_flags @@
include/linux/qed/qed_if.h:969:33: expected restricted __le32 [usertype] sb_id_and_flags
include/linux/qed/qed_if.h:969:33: got unsigned int
include/linux/qed/qed_if.h:976:9: sparse: cast from restricted __le32
include/linux/qed/qed_if.h:969:33: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] sb_id_and_flags @@ got [usertype] sb_id_and_flags @@
include/linux/qed/qed_if.h:969:33: expected restricted __le32 [usertype] sb_id_and_flags
include/linux/qed/qed_if.h:969:33: got unsigned int
include/linux/qed/qed_if.h:976:9: sparse: cast from restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_int.c:1266:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1266:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1266:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1266:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1266:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1266:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1267:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1267:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1267:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1267:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1267:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1267:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1268:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1268:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1268:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1268:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1268:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1268:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1269:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1269:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1269:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1269:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1269:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1269:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1270:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1270:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1270:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1270:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1270:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1270:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1289:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1289:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1289:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1289:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1289:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1289:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1297:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1297:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1297:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1297:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1297:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1297:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1299:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1299:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1299:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1299:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1299:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1299:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1300:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1300:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1300:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1300:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1300:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1300:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1319:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1319:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1319:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1319:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1319:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1319:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1321:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1321:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1321:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1321:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1321:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1321:17: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:1323:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:1323:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1323:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:1323:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:1323:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:1323:17: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:2220:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:2220:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:2220:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:2220:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:2220:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:2220:17: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_int.c:2222:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_int.c:2222:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:2222:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_int.c:2222:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_int.c:2222:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_int.c:2222:17: right side has type unsigned long long
--
>> drivers/net/ethernet/qlogic/qed/qed_mcp.c:2691:1: sparse: symbol '__qed_mcp_resc_lock' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_mcp.c:464:9: sparse: context imbalance in '_qed_mcp_cmd_and_union' - unexpected unlock
--
>> drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:163:32: sparse: mixing different enum types
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:163:32: int enum tunnel_clss versus
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:163:32: int enum qed_tunn_clss
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:165:33: sparse: mixing different enum types
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:165:33: int enum tunnel_clss versus
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:165:33: int enum qed_tunn_clss
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:167:33: sparse: mixing different enum types
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:167:33: int enum tunnel_clss versus
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:167:33: int enum qed_tunn_clss
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:169:36: sparse: mixing different enum types
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:169:36: int enum tunnel_clss versus
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:169:36: int enum qed_tunn_clss
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:171:36: sparse: mixing different enum types
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:171:36: int enum tunnel_clss versus
drivers/net/ethernet/qlogic/qed/qed_sp_commands.c:171:36: int enum qed_tunn_clss
--
>> drivers/net/ethernet/qlogic/qed/qed_spq.c:310:55: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned short [unsigned] [usertype] echo @@ got short [unsigned] [usertype] echo @@
drivers/net/ethernet/qlogic/qed/qed_spq.c:310:55: expected unsigned short [unsigned] [usertype] echo
drivers/net/ethernet/qlogic/qed/qed_spq.c:310:55: got restricted __le16 [usertype] echo
--
>> drivers/net/ethernet/qlogic/qed/qed_l2.c:414:50: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] tpa_max_size @@ got unsignedrestricted __le16 [usertype] tpa_max_size @@
drivers/net/ethernet/qlogic/qed/qed_l2.c:414:50: expected restricted __le16 [usertype] tpa_max_size
drivers/net/ethernet/qlogic/qed/qed_l2.c:414:50: got unsigned short [unsigned] [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_l2.c:415:58: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] tpa_min_size_to_cont @@ got e] tpa_min_size_to_cont @@
drivers/net/ethernet/qlogic/qed/qed_l2.c:415:58: expected restricted __le16 [usertype] tpa_min_size_to_cont
drivers/net/ethernet/qlogic/qed/qed_l2.c:415:58: got int
>> drivers/net/ethernet/qlogic/qed/qed_l2.c:416:59: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] tpa_min_size_to_start @@ got e] tpa_min_size_to_start @@
drivers/net/ethernet/qlogic/qed/qed_l2.c:416:59: expected restricted __le16 [usertype] tpa_min_size_to_start
drivers/net/ethernet/qlogic/qed/qed_l2.c:416:59: got int
drivers/net/ethernet/qlogic/qed/qed_l2.c:647:29: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] tpa_max_size @@ got unsignedrestricted __le16 [usertype] tpa_max_size @@
drivers/net/ethernet/qlogic/qed/qed_l2.c:647:29: expected restricted __le16 [usertype] tpa_max_size
drivers/net/ethernet/qlogic/qed/qed_l2.c:647:29: got unsigned short [unsigned] [usertype] tpa_max_size
>> drivers/net/ethernet/qlogic/qed/qed_l2.c:648:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] tpa_min_size_to_start @@ got unsignedrestricted __le16 [usertype] tpa_min_size_to_start @@
drivers/net/ethernet/qlogic/qed/qed_l2.c:648:38: expected restricted __le16 [usertype] tpa_min_size_to_start
drivers/net/ethernet/qlogic/qed/qed_l2.c:648:38: got unsigned short [unsigned] [usertype] tpa_min_size_to_start
>> drivers/net/ethernet/qlogic/qed/qed_l2.c:649:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] tpa_min_size_to_cont @@ got unsignedrestricted __le16 [usertype] tpa_min_size_to_cont @@
drivers/net/ethernet/qlogic/qed/qed_l2.c:649:37: expected restricted __le16 [usertype] tpa_min_size_to_cont
drivers/net/ethernet/qlogic/qed/qed_l2.c:649:37: got unsigned short [unsigned] [usertype] tpa_min_size_to_cont
>> drivers/net/ethernet/qlogic/qed/qed_l2.c:2090:21: sparse: restricted __le32 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_l2.c:2123:21: sparse: restricted __le32 degrades to integer
--
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:586:21: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:586:21: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:586:21: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:586:21: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:586:21: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:586:21: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:587:21: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:587:21: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:587:21: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:587:21: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:587:21: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:587:21: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:588:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:588:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:588:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:588:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:588:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:588:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:589:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:589:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:589:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:589:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:589:22: sparse: cast to restricted __be32
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:589:22: sparse: cast to restricted __be32
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:863:6: sparse: symbol 'qed_dcbx_aen' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_dcbx.c:1083:37: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] <noident> @@ got restrunsigned int [unsigned] <noident> @@
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:1083:37: expected unsigned int [unsigned] <noident>
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:1083:37: got restricted __be32 [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:1084:38: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] <noident> @@ got restrunsigned int [unsigned] <noident> @@
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:1084:38: expected unsigned int [unsigned] <noident>
drivers/net/ethernet/qlogic/qed/qed_dcbx.c:1084:38: got restricted __be32 [usertype] <noident>
--
>> drivers/net/ethernet/qlogic/qed/qed_debug.c:1847:29: sparse: restricted __le32 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_debug.c:1847:58: sparse: restricted __le32 degrades to integer
>> drivers/net/ethernet/qlogic/qed/qed_debug.c:1849:22: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] [assigned] [usertype] addr @@ got igned int [unsigned] [assigned] [usertype] addr @@
drivers/net/ethernet/qlogic/qed/qed_debug.c:1849:22: expected unsigned int [unsigned] [assigned] [usertype] addr
drivers/net/ethernet/qlogic/qed/qed_debug.c:1849:22: got restricted __le32 [addressable] [usertype] grc_addr
drivers/net/ethernet/qlogic/qed/qed_debug.c:1851:33: sparse: restricted __le32 degrades to integer
>> drivers/net/ethernet/qlogic/qed/qed_debug.c:1996:65: sparse: incorrect type in argument 4 (different base types) @@ expected unsigned int [unsigned] [usertype] param_val @@ got restrictunsigned int [unsigned] [usertype] param_val @@
drivers/net/ethernet/qlogic/qed/qed_debug.c:1996:65: expected unsigned int [unsigned] [usertype] param_val
drivers/net/ethernet/qlogic/qed/qed_debug.c:1996:65: got restricted __le32 [addressable] [usertype] timestamp
--
>> drivers/net/ethernet/qlogic/qed/qed_sriov.c:574:35: sparse: incorrect type in argument 3 (incompatible argument 3 (different base types)) @@ expected int ( *[usertype] cb )( ... ) @@ got rtype] cb )( ... ) @@
drivers/net/ethernet/qlogic/qed/qed_sriov.c:574:35: expected int ( *[usertype] cb )( ... )
drivers/net/ethernet/qlogic/qed/qed_sriov.c:574:35: got int ( *<noident> )( ... )
>> drivers/net/ethernet/qlogic/qed/qed_sriov.c:675:6: sparse: symbol '_qed_iov_pf_sanity_check' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_sriov.c:690:6: sparse: symbol 'qed_iov_pf_sanity_check' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_sriov.c:3928:6: sparse: symbol 'qed_iov_pf_get_pending_events' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_sriov.c:3971:39: sparse: cast from restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_sriov.c:3971:70: sparse: restricted __le32 degrades to integer
--
>> drivers/net/ethernet/qlogic/qed/qed_vf.c:172:5: sparse: symbol '_qed_vf_pf_release' was not declared. Should it be static?
--
>> drivers/net/ethernet/qlogic/qed/qed_ll2.c:161:6: sparse: symbol 'qed_ll2b_complete_rx_packet' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_ll2.c:756:44: sparse: mixing different enum types
drivers/net/ethernet/qlogic/qed/qed_ll2.c:756:44: int enum core_tx_dest versus
drivers/net/ethernet/qlogic/qed/qed_ll2.c:756:44: int enum qed_ll2_tx_dest
>> drivers/net/ethernet/qlogic/qed/qed_ll2.c:1661:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1661:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1661:9: right side has type int
>> drivers/net/ethernet/qlogic/qed/qed_ll2.c:1661:9: sparse: cast from restricted __le16
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1661:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1661:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1661:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1663:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1663:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1663:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1663:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1663:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_ll2.c:1663:9: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_ll2.c:2126:20: sparse: symbol 'll2_cbs' was not declared. Should it be static?
--
>> drivers/net/ethernet/qlogic/qed/qed_roce.c:151:6: sparse: symbol 'qed_roce_free_cid_pair' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_roce.c:267:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:267:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:267:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:267:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:267:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:267:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:270:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:270:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:270:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:270:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:270:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:270:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:274:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:274:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:274:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:274:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:274:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:274:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:278:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:278:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:278:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:278:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:278:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:278:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:282:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:282:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:282:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:282:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:282:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:282:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:286:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:286:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:286:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:286:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:286:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:286:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:289:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:289:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:289:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:289:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:289:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:289:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:293:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:293:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:293:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:293:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:293:9: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:293:9: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_roce.c:311:44: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:312:44: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:313:42: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:314:42: sparse: cast from restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_roce.c:327:29: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] *p_fw_mac @@ got short [usertype] *p_fw_mac @@
drivers/net/ethernet/qlogic/qed/qed_roce.c:327:29: expected unsigned short [usertype] *p_fw_mac
drivers/net/ethernet/qlogic/qed/qed_roce.c:327:29: got restricted __le16 *<noident>
drivers/net/ethernet/qlogic/qed/qed_roce.c:328:29: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] *p_fw_mac @@ got short [usertype] *p_fw_mac @@
drivers/net/ethernet/qlogic/qed/qed_roce.c:328:29: expected unsigned short [usertype] *p_fw_mac
drivers/net/ethernet/qlogic/qed/qed_roce.c:328:29: got restricted __le16 *<noident>
>> drivers/net/ethernet/qlogic/qed/qed_roce.c:330:32: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] udp_src_port @@ got unsignedrestricted __le16 [usertype] udp_src_port @@
drivers/net/ethernet/qlogic/qed/qed_roce.c:330:32: expected restricted __le16 [usertype] udp_src_port
drivers/net/ethernet/qlogic/qed/qed_roce.c:330:32: got unsigned short [unsigned] [usertype] udp_src_port
drivers/net/ethernet/qlogic/qed/qed_roce.c:408:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:408:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:408:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:408:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:408:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:408:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:411:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:411:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:411:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:411:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:411:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:411:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:415:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:415:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:415:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:415:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:415:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:415:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:418:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:418:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:418:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:418:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:418:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:418:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:421:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:421:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:421:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:421:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:421:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:421:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:440:44: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:441:44: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:442:42: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:443:42: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_roce.c:456:29: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] *p_fw_mac @@ got short [usertype] *p_fw_mac @@
drivers/net/ethernet/qlogic/qed/qed_roce.c:456:29: expected unsigned short [usertype] *p_fw_mac
drivers/net/ethernet/qlogic/qed/qed_roce.c:456:29: got restricted __le16 *<noident>
drivers/net/ethernet/qlogic/qed/qed_roce.c:457:29: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned short [usertype] *p_fw_mac @@ got short [usertype] *p_fw_mac @@
drivers/net/ethernet/qlogic/qed/qed_roce.c:457:29: expected unsigned short [usertype] *p_fw_mac
drivers/net/ethernet/qlogic/qed/qed_roce.c:457:29: got restricted __le16 *<noident>
drivers/net/ethernet/qlogic/qed/qed_roce.c:459:32: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] udp_src_port @@ got unsignedrestricted __le16 [usertype] udp_src_port @@
drivers/net/ethernet/qlogic/qed/qed_roce.c:459:32: expected restricted __le16 [usertype] udp_src_port
drivers/net/ethernet/qlogic/qed/qed_roce.c:459:32: got unsigned short [unsigned] [usertype] udp_src_port
drivers/net/ethernet/qlogic/qed/qed_roce.c:519:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:519:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:519:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:519:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:519:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:519:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:522:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:522:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:522:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:522:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:522:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:522:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:526:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:526:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:526:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:526:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:526:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:526:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:530:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:530:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:530:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:530:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:530:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:530:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:534:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:534:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:534:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:534:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:534:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:534:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:538:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:538:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:538:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:538:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:538:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:538:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:543:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:543:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:543:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:543:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:543:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:543:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:547:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:547:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:547:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:547:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:547:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:547:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:552:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_roce.c:552:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:552:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_roce.c:552:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_roce.c:552:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_roce.c:552:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_roce.c:557:9: sparse: invalid assignment: &=
--
>> drivers/net/ethernet/qlogic/qed/qed_rdma.c:137:5: sparse: symbol 'qed_rdma_get_sb_id' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_rdma.c:685:5: sparse: symbol 'qed_rdma_stop' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_rdma.c:772:33: sparse: cast removes address space of expression
>> drivers/net/ethernet/qlogic/qed/qed_rdma.c:1039:31: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] int_timeout @@ got unsignedrestricted __le16 [usertype] int_timeout @@
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1039:31: expected restricted __le16 [usertype] int_timeout
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1039:31: got unsigned short [unsigned] [usertype] int_timeout
>> drivers/net/ethernet/qlogic/qed/qed_rdma.c:1141:21: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [short] [usertype] <noident> @@ got unsigned] [short] [usertype] <noident> @@
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1141:21: expected unsigned short [unsigned] [short] [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1141:21: got restricted __le16 [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1142:21: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [short] [usertype] <noident> @@ got unsigned] [short] [usertype] <noident> @@
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1142:21: expected unsigned short [unsigned] [short] [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1142:21: got restricted __le16 [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1143:21: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [short] [usertype] <noident> @@ got unsigned] [short] [usertype] <noident> @@
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1143:21: expected unsigned short [unsigned] [short] [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1143:21: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_rdma.c:1434:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1434:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1434:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1434:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1434:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1434:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1438:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1438:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1438:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1438:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1438:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1438:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1441:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1441:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1441:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1441:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1441:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1441:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1446:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1446:17: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1446:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1446:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1446:17: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1446:17: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1450:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1450:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1450:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1450:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1450:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1450:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1454:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1454:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1454:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1454:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1454:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1454:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1458:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1458:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1458:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1458:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1458:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1458:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1462:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1462:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1462:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1462:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1462:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1462:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1466:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1466:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1466:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1466:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1466:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1466:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1469:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1469:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1469:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1469:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1469:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_rdma.c:1469:9: right side has type unsigned long long
--
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:270:22: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] pd @@ got unsignedrestricted __le16 [usertype] pd @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:270:22: expected restricted __le16 [usertype] pd
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:270:22: got unsigned short [unsigned] [usertype] pd
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:271:32: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] sq_num_pages @@ got unsignedrestricted __le16 [usertype] sq_num_pages @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:271:32: expected restricted __le16 [usertype] sq_num_pages
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:271:32: got unsigned short [unsigned] [usertype] sq_num_pages
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:272:32: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] rq_num_pages @@ got unsignedrestricted __le16 [usertype] rq_num_pages @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:272:32: expected restricted __le16 [usertype] rq_num_pages
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:272:32: got unsigned short [unsigned] [usertype] rq_num_pages
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:274:42: sparse: cast from restricted __le32
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:275:42: sparse: cast from restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:325:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:325:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:325:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:325:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:325:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:325:9: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:328:47: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] transition_to_state @@ got e] transition_to_state @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:328:47: expected restricted __le16 [usertype] transition_to_state
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:328:47: got int
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:330:47: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] transition_to_state @@ got e] transition_to_state @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:330:47: expected restricted __le16 [usertype] transition_to_state
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:330:47: got int
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:378:12: sparse: symbol 'iwarp_state_names' was not declared. Should it be static?
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:695:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:695:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:695:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:695:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:695:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:695:9: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:698:9: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:698:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:698:9: right side has type int
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:698:9: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:698:9: left side has type restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:698:9: right side has type unsigned long long
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:716:53: sparse: restricted __le16 degrades to integer
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:716:19: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cwnd @@ got e] cwnd @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:716:19: expected restricted __le32 [usertype] cwnd
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:716:19: got int
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:718:25: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ka_timeout @@ got e] ka_timeout @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:718:25: expected restricted __le32 [usertype] ka_timeout
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:718:25: got int
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:719:26: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ka_interval @@ got e] ka_interval @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:719:26: expected restricted __le32 [usertype] ka_interval
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:719:26: got int
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:813:63: sparse: restricted __le16 degrades to integer
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:865:54: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] len @@ got unsignedrestricted __le16 [usertype] len @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:865:54: expected restricted __le16 [usertype] len
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:865:54: got unsigned short [unsigned] [usertype] private_data_len
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:869:41: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ord @@ got unsignerestricted __le32 [usertype] ord @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:869:41: expected restricted __le32 [usertype] ord
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:869:41: got unsigned char [unsigned] [usertype] ord
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:870:41: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] ird @@ got unsignerestricted __le32 [usertype] ird @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:870:41: expected restricted __le32 [usertype] ird
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:870:41: got unsigned char [unsigned] [usertype] ird
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:872:31: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] tcp_cid @@ got [usertype] tcp_cid @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:872:31: expected restricted __le32 [usertype] tcp_cid
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:872:31: got unsigned int
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:898:31: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] rcv_wnd @@ got unsignedrestricted __le16 [usertype] rcv_wnd @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:898:31: expected restricted __le16 [usertype] rcv_wnd
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:898:31: got unsigned short [unsigned] [usertype] rcv_wnd_size
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:964:64: sparse: restricted __le16 degrades to integer
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:944:1: sparse: symbol 'qed_iwarp_parse_private_data' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:969:1: sparse: symbol 'qed_iwarp_mpa_reply_arrived' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1835:19: sparse: cast to restricted __be16
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1835:19: sparse: cast to restricted __be16
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1835:19: sparse: cast to restricted __be16
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1835:19: sparse: cast to restricted __be16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1860:56: sparse: restricted __le16 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1861:59: sparse: restricted __le16 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1896:9: sparse: restricted __le16 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:1903:9: sparse: restricted __le16 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2103:56: sparse: restricted __le16 degrades to integer
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2124:23: sparse: cast to restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2124:23: sparse: cast to restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2127:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] first_mpa_offset @@ got e] first_mpa_offset @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2127:36: expected restricted __le16 [usertype] first_mpa_offset
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2127:36: got int
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2129:23: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cid @@ got unsignrestricted __le32 [usertype] cid @@
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2129:23: expected restricted __le32 [usertype] cid
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2129:23: got unsigned int [unsigned] [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2147:56: sparse: restricted __le32 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2155:57: sparse: restricted __le16 degrades to integer
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2201:52: sparse: bad assignment (+=) to restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2240:52: sparse: bad assignment (+=) to restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2313:49: sparse: restricted __le16 degrades to integer
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2314:40: sparse: bad assignment (+=) to restricted __le16
drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2525:49: sparse: cast from restricted __le32
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2511:1: sparse: symbol 'qed_iwarp_ll2_slowpath' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2813:6: sparse: symbol 'qed_iwarp_qp_in_error' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2834:6: sparse: symbol 'qed_iwarp_exception_received' was not declared. Should it be static?
>> drivers/net/ethernet/qlogic/qed/qed_iwarp.c:2965:1: sparse: symbol 'qed_iwarp_connect_complete' was not declared. Should it be static?
--
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:325:29: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] physical_q0 @@ got short [unsigned] [usertype] physical_q0 @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:325:29: expected unsigned short [unsigned] [usertype] physical_q0
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:325:29: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:330:29: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] physical_q1 @@ got short [unsigned] [usertype] physical_q1 @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:330:29: expected unsigned short [unsigned] [usertype] physical_q1
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:330:29: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:361:42: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] local_mac_addr_hi @@ got e] local_mac_addr_hi @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:361:42: expected restricted __le16 [usertype] local_mac_addr_hi
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:361:42: got int
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:362:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] local_mac_addr_mid @@ got e] local_mac_addr_mid @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:362:43: expected restricted __le16 [usertype] local_mac_addr_mid
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:362:43: got int
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:363:42: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] local_mac_addr_lo @@ got e] local_mac_addr_lo @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:363:42: expected restricted __le16 [usertype] local_mac_addr_lo
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:363:42: got int
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:366:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] remote_mac_addr_hi @@ got e] remote_mac_addr_hi @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:366:43: expected restricted __le16 [usertype] remote_mac_addr_hi
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:366:43: got int
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:367:44: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] remote_mac_addr_mid @@ got e] remote_mac_addr_mid @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:367:44: expected restricted __le16 [usertype] remote_mac_addr_mid
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:367:44: got int
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:368:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] remote_mac_addr_lo @@ got e] remote_mac_addr_lo @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:368:43: expected restricted __le16 [usertype] remote_mac_addr_lo
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:368:43: got int
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:427:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] local_mac_addr_hi @@ got e] local_mac_addr_hi @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:427:43: expected restricted __le16 [usertype] local_mac_addr_hi
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:427:43: got int
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:428:44: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] local_mac_addr_mid @@ got e] local_mac_addr_mid @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:428:44: expected restricted __le16 [usertype] local_mac_addr_mid
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:428:44: got int
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:429:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] local_mac_addr_lo @@ got e] local_mac_addr_lo @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:429:43: expected restricted __le16 [usertype] local_mac_addr_lo
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:429:43: got int
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:432:44: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] remote_mac_addr_hi @@ got e] remote_mac_addr_hi @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:432:44: expected restricted __le16 [usertype] remote_mac_addr_hi
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:432:44: got int
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:433:45: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] remote_mac_addr_mid @@ got e] remote_mac_addr_mid @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:433:45: expected restricted __le16 [usertype] remote_mac_addr_mid
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:433:45: got int
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:434:44: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] remote_mac_addr_lo @@ got e] remote_mac_addr_lo @@
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:434:44: expected restricted __le16 [usertype] remote_mac_addr_lo
drivers/net/ethernet/qlogic/qed/qed_iscsi.c:434:44: got int
>> drivers/net/ethernet/qlogic/qed/qed_iscsi.c:876:6: sparse: symbol 'qed_iscsi_free_connection' was not declared. Should it be static?
--
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:154:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:154:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:154:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:155:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] sq_num_pages_in_pbl @@ got unsignedrestricted __le16 [usertype] sq_num_pages_in_pbl @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:155:37: expected restricted __le16 [usertype] sq_num_pages_in_pbl
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:155:37: got unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:174:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:174:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:174:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:175:39: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] num_tasks @@ got unsignedrestricted __le16 [usertype] num_tasks @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:175:39: expected restricted __le16 [usertype] num_tasks
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:175:39: got unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:182:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:182:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:182:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:183:41: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] cq_num_entries @@ got unsignedrestricted __le16 [usertype] cq_num_entries @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:183:41: expected restricted __le16 [usertype] cq_num_entries
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:183:41: got unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:185:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:185:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:185:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:186:43: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] cmdq_num_entries @@ got unsignedrestricted __le16 [usertype] cmdq_num_entries @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:186:43: expected restricted __le16 [usertype] cmdq_num_entries
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:186:43: got unsigned short [unsigned] [usertype] tmp
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:198:21: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [assigned] [usertype] tmp @@ got igned] [assigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:198:21: expected unsigned short [unsigned] [assigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:198:21: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:199:56: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 <noident> @@ got unsigned short [unsigned] [assrestricted __le16 <noident> @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:199:56: expected restricted __le16 <noident>
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:199:56: got unsigned short [unsigned] [assigned] [usertype] tmp
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:276:29: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] physical_q0 @@ got short [unsigned] [usertype] physical_q0 @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:276:29: expected unsigned short [unsigned] [usertype] physical_q0
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:276:29: got restricted __le16 [usertype] <noident>
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:298:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:298:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:298:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:299:35: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] tx_max_fc_pay_len @@ got unsignedrestricted __le16 [usertype] tx_max_fc_pay_len @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:299:35: expected restricted __le16 [usertype] tx_max_fc_pay_len
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:299:35: got unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:300:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:300:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:300:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:301:35: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] e_d_tov_timer_val @@ got unsignedrestricted __le16 [usertype] e_d_tov_timer_val @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:301:35: expected restricted __le16 [usertype] e_d_tov_timer_val
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:301:35: got unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:302:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:302:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:302:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:303:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] rec_rr_tov_timer_val @@ got unsignedrestricted __le16 [usertype] rec_rr_tov_timer_val @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:303:38: expected restricted __le16 [usertype] rec_rr_tov_timer_val
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:303:38: got unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:304:13: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] tmp @@ got short [unsigned] [usertype] tmp @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:304:13: expected unsigned short [unsigned] [usertype] tmp
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:304:13: got restricted __le16 [usertype] <noident>
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:305:35: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] rx_max_fc_pay_len @@ got unsignedrestricted __le16 [usertype] rx_max_fc_pay_len @@
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:305:35: expected restricted __le16 [usertype] rx_max_fc_pay_len
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:305:35: got unsigned short [unsigned] [usertype] tmp
>> drivers/net/ethernet/qlogic/qed/qed_fcoe.c:584:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:584:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:584:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:584:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:584:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:584:17: right side has type unsigned long long
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:586:17: sparse: invalid assignment: &=
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:586:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:586:17: right side has type int
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:586:17: sparse: invalid assignment: |=
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:586:17: left side has type restricted __le32
drivers/net/ethernet/qlogic/qed/qed_fcoe.c:586:17: right side has type unsigned long long
Please review and possibly fold the followup patch.
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply
* [RFC PATCH] qed*: qed_cm_init_pf() can be static
From: kbuild test robot @ 2018-03-27 4:48 UTC (permalink / raw)
To: Michal Kalderon
Cc: kbuild-all, michal.kalderon, davem, netdev, linux-rdma,
linux-scsi, Tomer Tayar, Manish Rangankar, Ariel Elior
In-Reply-To: <1522083732-26560-1-git-send-email-Michal.Kalderon@cavium.com>
Fixes: cda33d25b808 ("qed*: Utilize FW 8.33.11.0")
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---
qed_cxt.c | 2 +-
qed_dcbx.c | 2 +-
qed_dev.c | 12 ++++++------
qed_init_fw_funcs.c | 2 +-
qed_iscsi.c | 4 ++--
qed_iwarp.c | 18 +++++++++---------
qed_ll2.c | 4 ++--
qed_mcp.c | 2 +-
qed_rdma.c | 4 ++--
qed_roce.c | 2 +-
qed_sriov.c | 8 ++++----
qed_vf.c | 2 +-
12 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_cxt.c b/drivers/net/ethernet/qlogic/qed/qed_cxt.c
index 00f41c1..1695c90 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_cxt.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_cxt.c
@@ -1531,7 +1531,7 @@ void qed_qm_init_pf(struct qed_hwfn *p_hwfn,
}
/* CM PF */
-void qed_cm_init_pf(struct qed_hwfn *p_hwfn)
+static void qed_cm_init_pf(struct qed_hwfn *p_hwfn)
{
/* XCM pure-LB queue */
STORE_RT_REG(p_hwfn, XCM_REG_CON_PHY_Q3_RT_OFFSET,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
index 449777f..456b8d1 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dcbx.c
@@ -860,7 +860,7 @@ static int qed_dcbx_read_mib(struct qed_hwfn *p_hwfn,
return rc;
}
-void qed_dcbx_aen(struct qed_hwfn *hwfn, u32 mib_type)
+static void qed_dcbx_aen(struct qed_hwfn *hwfn, u32 mib_type)
{
struct qed_common_cb_ops *op = hwfn->cdev->protocol_ops.common;
void *cookie = hwfn->cdev->ops_cookie;
diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c
index de5527c..0daef44 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_dev.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c
@@ -230,12 +230,12 @@ static u32 qed_get_pq_flags(struct qed_hwfn *p_hwfn)
}
/* Getters for resource amounts necessary for qm initialization */
-u8 qed_init_qm_get_num_tcs(struct qed_hwfn *p_hwfn)
+static u8 qed_init_qm_get_num_tcs(struct qed_hwfn *p_hwfn)
{
return p_hwfn->hw_info.num_hw_tc;
}
-u16 qed_init_qm_get_num_vfs(struct qed_hwfn *p_hwfn)
+static u16 qed_init_qm_get_num_vfs(struct qed_hwfn *p_hwfn)
{
return IS_QED_SRIOV(p_hwfn->cdev) ?
p_hwfn->cdev->p_iov_info->total_vfs : 0;
@@ -243,7 +243,7 @@ u16 qed_init_qm_get_num_vfs(struct qed_hwfn *p_hwfn)
#define NUM_DEFAULT_RLS 1
-u16 qed_init_qm_get_num_pf_rls(struct qed_hwfn *p_hwfn)
+static u16 qed_init_qm_get_num_pf_rls(struct qed_hwfn *p_hwfn)
{
u16 num_pf_rls, num_vfs = qed_init_qm_get_num_vfs(p_hwfn);
@@ -261,7 +261,7 @@ u16 qed_init_qm_get_num_pf_rls(struct qed_hwfn *p_hwfn)
return num_pf_rls;
}
-u16 qed_init_qm_get_num_vports(struct qed_hwfn *p_hwfn)
+static u16 qed_init_qm_get_num_vports(struct qed_hwfn *p_hwfn)
{
u32 pq_flags = qed_get_pq_flags(p_hwfn);
@@ -273,7 +273,7 @@ u16 qed_init_qm_get_num_vports(struct qed_hwfn *p_hwfn)
}
/* calc amount of PQs according to the requested flags */
-u16 qed_init_qm_get_num_pqs(struct qed_hwfn *p_hwfn)
+static u16 qed_init_qm_get_num_pqs(struct qed_hwfn *p_hwfn)
{
u32 pq_flags = qed_get_pq_flags(p_hwfn);
@@ -507,7 +507,7 @@ u16 qed_get_cm_pq_idx_vf(struct qed_hwfn *p_hwfn, u16 vf)
return qed_get_cm_pq_idx(p_hwfn, PQ_FLAGS_VFS) + vf;
}
-u16 qed_get_cm_pq_idx_rl(struct qed_hwfn *p_hwfn, u8 rl)
+static u16 qed_get_cm_pq_idx_rl(struct qed_hwfn *p_hwfn, u8 rl)
{
u16 max_rl = qed_init_qm_get_num_pf_rls(p_hwfn);
diff --git a/drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c b/drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c
index 1365da7..b296b78 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_init_fw_funcs.c
@@ -1225,7 +1225,7 @@ void qed_gft_disable(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, u16 pf_id)
0);
}
-void qed_set_gft_event_id_cm_hdr(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
+static void qed_set_gft_event_id_cm_hdr(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
{
u32 rfs_cm_hdr_event_id;
diff --git a/drivers/net/ethernet/qlogic/qed/qed_iscsi.c b/drivers/net/ethernet/qlogic/qed/qed_iscsi.c
index c0d4a54..1135387 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_iscsi.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_iscsi.c
@@ -873,8 +873,8 @@ static void qed_iscsi_release_connection(struct qed_hwfn *p_hwfn,
spin_unlock_bh(&p_hwfn->p_iscsi_info->lock);
}
-void qed_iscsi_free_connection(struct qed_hwfn *p_hwfn,
- struct qed_iscsi_conn *p_conn)
+static void qed_iscsi_free_connection(struct qed_hwfn *p_hwfn,
+ struct qed_iscsi_conn *p_conn)
{
qed_chain_free(p_hwfn->cdev, &p_conn->xhq);
qed_chain_free(p_hwfn->cdev, &p_conn->uhq);
diff --git a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c
index 2a2b101..7b292ec 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c
@@ -375,7 +375,7 @@ qed_iwarp2roce_state(enum qed_iwarp_qp_state state)
}
}
-const char *iwarp_state_names[] = {
+static const char *iwarp_state_names[] = {
"IDLE",
"RTS",
"TERMINATE",
@@ -940,7 +940,7 @@ qed_iwarp_return_ep(struct qed_hwfn *p_hwfn, struct qed_iwarp_ep *ep)
spin_unlock_bh(&p_hwfn->p_rdma_info->iwarp.iw_lock);
}
-void
+static void
qed_iwarp_parse_private_data(struct qed_hwfn *p_hwfn, struct qed_iwarp_ep *ep)
{
struct mpa_v2_hdr *mpa_v2_params;
@@ -965,7 +965,7 @@ qed_iwarp_parse_private_data(struct qed_hwfn *p_hwfn, struct qed_iwarp_ep *ep)
mpa_data_size;
}
-void
+static void
qed_iwarp_mpa_reply_arrived(struct qed_hwfn *p_hwfn, struct qed_iwarp_ep *ep)
{
struct qed_iwarp_cm_event_params params;
@@ -2507,7 +2507,7 @@ static void qed_iwarp_ll2_rel_tx_pkt(void *cxt, u8 connection_handle,
/* The only slowpath for iwarp ll2 is unalign flush. When this completion
* is received, need to reset the FPDU.
*/
-void
+static void
qed_iwarp_ll2_slowpath(void *cxt,
u8 connection_handle,
u32 opaque_data_0, u32 opaque_data_1)
@@ -2810,8 +2810,8 @@ int qed_iwarp_stop(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
return qed_iwarp_ll2_stop(p_hwfn, p_ptt);
}
-void qed_iwarp_qp_in_error(struct qed_hwfn *p_hwfn,
- struct qed_iwarp_ep *ep, u8 fw_return_code)
+static void qed_iwarp_qp_in_error(struct qed_hwfn *p_hwfn,
+ struct qed_iwarp_ep *ep, u8 fw_return_code)
{
struct qed_iwarp_cm_event_params params;
@@ -2831,8 +2831,8 @@ void qed_iwarp_qp_in_error(struct qed_hwfn *p_hwfn,
ep->event_cb(ep->cb_context, ¶ms);
}
-void qed_iwarp_exception_received(struct qed_hwfn *p_hwfn,
- struct qed_iwarp_ep *ep, int fw_ret_code)
+static void qed_iwarp_exception_received(struct qed_hwfn *p_hwfn,
+ struct qed_iwarp_ep *ep, int fw_ret_code)
{
struct qed_iwarp_cm_event_params params;
bool event_cb = false;
@@ -2961,7 +2961,7 @@ qed_iwarp_tcp_connect_unsuccessful(struct qed_hwfn *p_hwfn,
}
}
-void
+static void
qed_iwarp_connect_complete(struct qed_hwfn *p_hwfn,
struct qed_iwarp_ep *ep, u8 fw_return_code)
{
diff --git a/drivers/net/ethernet/qlogic/qed/qed_ll2.c b/drivers/net/ethernet/qlogic/qed/qed_ll2.c
index 74fc626..ff0556e 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_ll2.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_ll2.c
@@ -158,7 +158,7 @@ static void qed_ll2_kill_buffers(struct qed_dev *cdev)
qed_ll2_dealloc_buffer(cdev, buffer);
}
-void qed_ll2b_complete_rx_packet(void *cxt, struct qed_ll2_comp_rx_data *data)
+static void qed_ll2b_complete_rx_packet(void *cxt, struct qed_ll2_comp_rx_data *data)
{
struct qed_hwfn *p_hwfn = cxt;
struct qed_ll2_buffer *buffer = data->cookie;
@@ -2123,7 +2123,7 @@ static void qed_ll2_register_cb_ops(struct qed_dev *cdev,
cdev->ll2->cb_cookie = cookie;
}
-struct qed_ll2_cbs ll2_cbs = {
+static struct qed_ll2_cbs ll2_cbs = {
.rx_comp_cb = &qed_ll2b_complete_rx_packet,
.rx_release_cb = &qed_ll2b_release_rx_packet,
.tx_comp_cb = &qed_ll2b_complete_tx_packet,
diff --git a/drivers/net/ethernet/qlogic/qed/qed_mcp.c b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
index 6f46cb1..a4141fa 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_mcp.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
@@ -2687,7 +2687,7 @@ static int qed_mcp_resource_cmd(struct qed_hwfn *p_hwfn,
return rc;
}
-int
+static int
__qed_mcp_resc_lock(struct qed_hwfn *p_hwfn,
struct qed_ptt *p_ptt,
struct qed_resc_lock_params *p_params)
diff --git a/drivers/net/ethernet/qlogic/qed/qed_rdma.c b/drivers/net/ethernet/qlogic/qed/qed_rdma.c
index a411f9c..a47cf6f 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_rdma.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_rdma.c
@@ -134,7 +134,7 @@ static bool qed_bmap_is_empty(struct qed_bmap *bmap)
return bmap->max_count == find_first_bit(bmap->bitmap, bmap->max_count);
}
-u32 qed_rdma_get_sb_id(void *p_hwfn, u32 rel_sb_id)
+static u32 qed_rdma_get_sb_id(void *p_hwfn, u32 rel_sb_id)
{
/* First sb id for RoCE is after all the l2 sb */
return FEAT_NUM((struct qed_hwfn *)p_hwfn, QED_PF_L2_QUE) + rel_sb_id;
@@ -682,7 +682,7 @@ static int qed_rdma_setup(struct qed_hwfn *p_hwfn,
return qed_rdma_start_fw(p_hwfn, params, p_ptt);
}
-int qed_rdma_stop(void *rdma_cxt)
+static int qed_rdma_stop(void *rdma_cxt)
{
struct qed_hwfn *p_hwfn = (struct qed_hwfn *)rdma_cxt;
struct rdma_close_func_ramrod_data *p_ramrod;
diff --git a/drivers/net/ethernet/qlogic/qed/qed_roce.c b/drivers/net/ethernet/qlogic/qed/qed_roce.c
index fb7c2d1..db36e3b 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_roce.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_roce.c
@@ -148,7 +148,7 @@ static enum roce_flavor qed_roce_mode_to_flavor(enum roce_mode roce_mode)
return flavor;
}
-void qed_roce_free_cid_pair(struct qed_hwfn *p_hwfn, u16 cid)
+static void qed_roce_free_cid_pair(struct qed_hwfn *p_hwfn, u16 cid)
{
spin_lock_bh(&p_hwfn->p_rdma_info->lock);
qed_bmap_release_id(p_hwfn, &p_hwfn->p_rdma_info->cid_map, cid);
diff --git a/drivers/net/ethernet/qlogic/qed/qed_sriov.c b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
index 5acb91b..8bab9af 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_sriov.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_sriov.c
@@ -672,8 +672,8 @@ int qed_iov_hw_info(struct qed_hwfn *p_hwfn)
return 0;
}
-bool _qed_iov_pf_sanity_check(struct qed_hwfn *p_hwfn,
- int vfid, bool b_fail_malicious)
+static bool _qed_iov_pf_sanity_check(struct qed_hwfn *p_hwfn,
+ int vfid, bool b_fail_malicious)
{
/* Check PF supports sriov */
if (IS_VF(p_hwfn->cdev) || !IS_QED_SRIOV(p_hwfn->cdev) ||
@@ -687,7 +687,7 @@ bool _qed_iov_pf_sanity_check(struct qed_hwfn *p_hwfn,
return true;
}
-bool qed_iov_pf_sanity_check(struct qed_hwfn *p_hwfn, int vfid)
+static bool qed_iov_pf_sanity_check(struct qed_hwfn *p_hwfn, int vfid)
{
return _qed_iov_pf_sanity_check(p_hwfn, vfid, true);
}
@@ -3925,7 +3925,7 @@ static void qed_iov_process_mbx_req(struct qed_hwfn *p_hwfn,
}
}
-void qed_iov_pf_get_pending_events(struct qed_hwfn *p_hwfn, u64 *events)
+static void qed_iov_pf_get_pending_events(struct qed_hwfn *p_hwfn, u64 *events)
{
int i;
diff --git a/drivers/net/ethernet/qlogic/qed/qed_vf.c b/drivers/net/ethernet/qlogic/qed/qed_vf.c
index 91b5e9f..d83e38f 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_vf.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_vf.c
@@ -169,7 +169,7 @@ static void qed_vf_pf_add_qid(struct qed_hwfn *p_hwfn,
p_qid_tlv->qid = p_cid->qid_usage_idx;
}
-int _qed_vf_pf_release(struct qed_hwfn *p_hwfn, bool b_final)
+static int _qed_vf_pf_release(struct qed_hwfn *p_hwfn, bool b_final)
{
struct qed_vf_iov *p_iov = p_hwfn->vf_iov_info;
struct pfvf_def_resp_tlv *resp;
^ permalink raw reply related
* [PATCH net] vhost: correctly remove wait queue during poll failure
From: Jason Wang @ 2018-03-27 3:47 UTC (permalink / raw)
To: mst, jasowang; +Cc: kvm, virtualization, netdev, linux-kernel
We tried to remove vq poll from wait queue, but do not check whether
or not it was in a list before. This will lead double free. Fixing
this by checking poll->wqh to make sure it was in a list.
Reported-by: syzbot+c0272972b01b872e604a@syzkaller.appspotmail.com
Fixes: 2b8b328b61c79 ("vhost_net: handle polling errors when setting backend")
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
drivers/vhost/vhost.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 1b3e8d2d..5d5a9d9 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -212,8 +212,7 @@ int vhost_poll_start(struct vhost_poll *poll, struct file *file)
if (mask)
vhost_poll_wakeup(&poll->wait, 0, 0, poll_to_key(mask));
if (mask & EPOLLERR) {
- if (poll->wqh)
- remove_wait_queue(poll->wqh, &poll->wait);
+ vhost_poll_stop(poll);
ret = -EINVAL;
}
--
2.7.4
^ permalink raw reply related
* Re: BUG: corrupted list in remove_wait_queue
From: Jason Wang @ 2018-03-27 3:36 UTC (permalink / raw)
To: syzbot, kvm, linux-kernel, mst, netdev, syzkaller-bugs,
virtualization
In-Reply-To: <0000000000004822e3056827baf4@google.com>
On 2018年03月24日 20:32, syzbot wrote:
> syzbot has found reproducer for the following crash on upstream commit
> 99fec39e7725d091c94d1bb0242e40c8092994f6 (Fri Mar 23 22:34:18 2018 +0000)
> Merge tag 'trace-v4.16-rc4' of
> git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
> syzbot dashboard link:
> https://syzkaller.appspot.com/bug?extid=c0272972b01b872e604a
>
> So far this crash happened 4 times on upstream.
> C reproducer is attached.
> syzkaller reproducer is attached.
> Raw console output is attached.
> .config is attached.
> compiler: gcc (GCC) 7.1.1 20170620
>
> IMPORTANT: if you fix the bug, please add the following tag to the
> commit:
> Reported-by: syzbot+c0272972b01b872e604a@syzkaller.appspotmail.com
> It will help syzbot understand when the bug is fixed.
>
> list_del corruption, 0000000054a89bb5->next is LIST_POISON1
> (00000000a63e4a19)
> ------------[ cut here ]------------
> kernel BUG at lib/list_debug.c:47!
> invalid opcode: 0000 [#1] SMP KASAN
> Dumping ftrace buffer:
> (ftrace buffer empty)
> Modules linked in:
> CPU: 0 PID: 4851 Comm: syzkaller762396 Not tainted 4.16.0-rc6+ #364
> Hardware name: Google Google Compute Engine/Google Compute Engine,
> BIOS Google 01/01/2011
> RIP: 0010:__list_del_entry_valid+0xd3/0x150 lib/list_debug.c:45
> RSP: 0018:ffff8801d3ff71b8 EFLAGS: 00010086
> RAX: 000000000000004e RBX: dead000000000200 RCX: 0000000000000000
> RDX: 000000000000004e RSI: 1ffff1003a7fedec RDI: ffffed003a7fee2b
> RBP: ffff8801d3ff71d0 R08: ffff8801db227fc0 R09: 1ffff1003a7fed93
> R10: ffff8801d3ff7090 R11: 0000000000000002 R12: dead000000000100
> R13: ffff8801b6a2d458 R14: ffff8801b6a2d460 R15: ffff8801d27d1780
> FS: 0000000000000000(0000) GS:ffff8801db200000(0000)
> knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 000000002001d000 CR3: 0000000006e22002 CR4: 00000000001606f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> __list_del_entry include/linux/list.h:117 [inline]
> list_del include/linux/list.h:125 [inline]
> __remove_wait_queue include/linux/wait.h:184 [inline]
> remove_wait_queue+0x90/0x350 kernel/sched/wait.c:51
> vhost_poll_stop+0x46/0x90 drivers/vhost/vhost.c:229
> vhost_net_disable_vq drivers/vhost/net.c:405 [inline]
> vhost_net_stop_vq+0x90/0x120 drivers/vhost/net.c:973
> vhost_net_stop drivers/vhost/net.c:984 [inline]
> vhost_net_release+0x49/0x190 drivers/vhost/net.c:1017
> __fput+0x327/0x7e0 fs/file_table.c:209
> ____fput+0x15/0x20 fs/file_table.c:243
> task_work_run+0x199/0x270 kernel/task_work.c:113
> exit_task_work include/linux/task_work.h:22 [inline]
> do_exit+0x9bb/0x1ad0 kernel/exit.c:865
> do_group_exit+0x149/0x400 kernel/exit.c:968
> get_signal+0x73a/0x16d0 kernel/signal.c:2469
> do_signal+0x90/0x1e90 arch/x86/kernel/signal.c:809
> exit_to_usermode_loop+0x258/0x2f0 arch/x86/entry/common.c:162
> prepare_exit_to_usermode arch/x86/entry/common.c:196 [inline]
> syscall_return_slowpath arch/x86/entry/common.c:265 [inline]
> do_syscall_64+0x6ec/0x940 arch/x86/entry/common.c:292
> entry_SYSCALL_64_after_hwframe+0x42/0xb7
> RIP: 0033:0x44a8e9
> RSP: 002b:00007f7ec8480da8 EFLAGS: 00000293 ORIG_RAX: 0000000000000010
> RAX: 0000000000000000 RBX: 00000000006e29e4 RCX: 000000000044a8e9
> RDX: 0000000020000340 RSI: 00000000400454ca RDI: 0000000000000005
> RBP: 00000000006e29e0 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000293 R12: 6f68762f7665642f
> R13: 6475612f7665642f R14: 74656e2f7665642f R15: 0000000000000001
> Code: 8f 00 00 00 49 8b 54 24 08 48 39 f2 75 3b 48 83 c4 08 b8 01 00
> 00 00 5b 41 5c 5d c3 4c 89 e2 48 c7 c7 00 80 40 86 e8 85 df fb fe <0f>
> 0b 48 c7 c7 60 80 40 86 e8 77 df fb fe 0f 0b 48 c7 c7 c0 80
> RIP: __list_del_entry_valid+0xd3/0x150 lib/list_debug.c:45 RSP:
> ffff8801d3ff71b8
> ---[ end trace bdcbea47fcda73ff ]---
>
This is because we do not clear poll->wqh when poll fails, then a double
free may be triggered. Will post a patch. And I suspect we need hold vq
mutex in vhost_dev_stop().
Thanks
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox